我想利用VC获取IIS中的一些信息,譬如:IIS含有哪些WEB站点、FTP站点;WEB站点含有哪些虚拟目录;虚拟目录的属性信息等,不知哪位高手知道,麻烦告诉小弟一下,十分着急,谢啦!

解决方案 »

  1.   

    to zfive5:
    能不能具体一点
    有没有api可以访问这些信息?
      

  2.   

    bool CW3SvcAgent::CreateWebServer(LPCTSTR lpszBindAddress,
      LPCTSTR lpszDomain,
      LPCTSTR lpszPathName)
    {
    if(lpszBindAddress==NULL||NULL==lpszDomain||NULL==lpszPathName)
    return false; DeleteWebServer(); IADsContainer *pCont=NULL;
    IADs* pAds=NULL;
    IADs* pVrAds=NULL;
    IADsServiceOperations *pSrvOp=NULL;
    IDispatch *pDisp = NULL;
    IDispatch *pVrDisp = NULL; _bstr_t WNumer = "1";
    int iNumer = 1;
    char szTemp[16] = {0}; _bstr_t newBindings=_bstr_t(lpszBindAddress)+":"+lpszDomain;
    HRESULT hr;
    bool bRet = false; if(ADsGetObject(L"IIS://localhost/w3svc",IID_IADsContainer,(void**)&pCont)==S_OK)
    {   
    while(pCont->GetObject(L"IIsWebServer",WNumer,&pDisp) == S_OK)
    {
    iNumer++;
    itoa(iNumer, szTemp, 10);
    WNumer = szTemp;
    }

    if(pCont->Create(L"IIsWebServer",WNumer,&pDisp)==S_OK)
    {
    hr=pDisp->QueryInterface(IID_IADs, (void**)&pAds);
    hr=pDisp->QueryInterface(IID_IADsServiceOperations, (void**)&pSrvOp);
    pAds->Put(L"ServerSize",_variant_t(long(1)));
    pAds->Put(L"ServerComment",_variant_t(_bstr_t(SERVERCOMMENT)));
    pAds->Put(L"ServerBindings",_variant_t(newBindings));
    pAds->SetInfo();

    hr=pCont->GetObject(L"IIsWebServer",(WNumer),&pDisp);
    if(pDisp->QueryInterface(IID_IADsContainer,(void**)&pCont)==S_OK)
    {
    if(pCont->Create(L"IIsWebVirtualDir",L"Root",&pVrDisp)==S_OK)
    {
    hr=pVrDisp->QueryInterface(IID_IADs, (void**)&pVrAds);
    pVrAds->Put(L"AccessRead",_variant_t(true));
    pVrAds->Put(L"AccessWrite",_variant_t(false));
    pVrAds->Put(L"AccessScript",_variant_t(true));
    pVrAds->Put(L"EnableDirBrowsing",_variant_t(false));
    pVrAds->Put(L"EnableDefaultDoc",_variant_t(true));
    pVrAds->Put(L"Path",_variant_t(lpszPathName));
    pVrAds->Put(L"AppRoot",_variant_t(lpszPathName));
    pVrAds->SetInfo(); DISPID dispid;

    LPWSTR szDispName = L"AppCreate2";
    HRESULT hresult = pVrAds->GetIDsOfNames(IID_NULL,&szDispName,1,
    LOCALE_SYSTEM_DEFAULT,&dispid);
    if(hresult == S_OK)
    {
    DISPPARAMS par;
    VARIANTARG vName;
    VariantInit(&vName);

    vName.vt = VT_BOOL;
    vName.boolVal = false;

    par.cArgs = 1;
    par.rgvarg = &vName;
    par.cNamedArgs = 0;
    par.rgdispidNamedArgs = NULL;



    hresult = pVrAds->Invoke(dispid,IID_NULL,LOCALE_SYSTEM_DEFAULT,
    DISPATCH_METHOD,&par,NULL, NULL,NULL);
    DWORD dwError = ::GetLastError();
    } pVrAds->Release();
    pAds->Release();
    pCont->Release(); }
    hr=pSrvOp->Start();
    hr=pSrvOp->Release();
    bRet = true;
    }
    }
    }
    return bRet;
    }