本帖最后由 VisualEleven 于 2011-05-23 10:41:38 编辑

解决方案 »

  1.   

    好像是ADsGetObject调用不成功
    ----------------------------
    看看ADsGetObject具体的返回值是什么,在MSDN上对应着error code查一下看看什么错误
      

  2.   

    是应为没对COM组件进行初始化
    BOOL   CreateVirtualDirection(LPCTSTR   lpszVirtualDirName,LPCTSTR   lpszDiskPath)  
      {  
      IADsContainer*   iContainer;  
      IADs*   iAds;  
      ::CoInitialize(NULL);  //COM组件进行初始化
      if(ADsGetObject(L"IIS://localhost/w3svc",IID_IADsContainer,(void**)&iContainer)==S_OK)  
      {  
      //等到默认站点  
      iContainer->GetObject(_bstr_t("IIsWebServer"),   _bstr_t("1"),(IDispatch**)&iAds);  
      if(iAds->QueryInterface(IID_IADsContainer,(void**)&iContainer)==S_OK)  
      {  
      //得到默认站点的根目录  
      iContainer->GetObject(_bstr_t("IIsWebVirtualDir"),_bstr_t("Root"),(IDispatch**)&iAds);  
      //获得访问虚拟目录  
      if(iAds->QueryInterface(IID_IADsContainer,(void**)&iContainer)==S_OK)  
      {  
      //先删除了虚拟目录  
      iContainer->Delete(_bstr_t("IIsWebVirtualDir"),   _bstr_t(lpszVirtualDirName));  
      //建立虚拟目录  
      if(iContainer->Create(_bstr_t("IIsWebVirtualDir"),   _bstr_t(lpszVirtualDirName),(IDispatch**)&iAds)==S_OK)  
      {  
      //设置虚拟目录的属性  
      iAds->Put(_bstr_t("AccessRead"),_variant_t("True"));//注意跟VB中的设置属性比较  
      iAds->Put(_bstr_t("AccessWrite"),_variant_t("True"));  
      iAds->Put(_bstr_t("Path"),_variant_t(lpszDiskPath));  
      iAds->SetInfo();  
      iAds->Release();  
      iAds->Release();  
      iContainer->Release();  
      iContainer->Release();  
      return   TRUE;  
      }  
      else  
      {  
      iAds->Release();  
      iAds->Release();  
      iContainer->Release();  
      iContainer->Release();  
      return   FALSE;  
      }  
      }  
      else  
      {  
      iAds->Release();  
      iContainer->Release();  
      }  
      }  
      else  
      {  
      iAds->Release();  
      }  
      iContainer->Release();  
      }  
      return   FALSE;  
      }