如题!~
 
  有没有高手知道 iis中怎么样把IIS里的虚拟目录给列出来比如我的IIS里面有
   
    aa和bb两个虚拟目录    我想在我的vc程序里 这样列出来
   
    虚拟目录:aa
        路径:D://****
        脚本增援访问:√
    读取:√
    写入:×
    ------------
    虚拟目录:aa
        路径:F://****
        脚本增援访问:√
    读取:√
    写入:×等等类似的!~ 有没有这方面的资料可供小弟参考的~谢了!~    
   

解决方案 »

  1.   

    改正:
    我想在我的vc程序里 这样列出来
       
        虚拟目录:aa
            路径:D://****
            脚本增援访问:√
        读取:√
        写入:×
        ------------
        虚拟目录:bb
            路径:F://****
            脚本增援访问:√
        读取:√
        写入:×
      

  2.   

    http://jarjin.blogchina.com/2189439.html
      

  3.   

    转贴出来好了..
    使用VC++ ADSI编程控制IIS- -
                                           李骏  (2005-7-6)由于工作需要,最近用到了ADSI对IIS的控制编程,在网上Search了N久,除了一些关于建立虚拟目录的文章外,没有稍微深入一些的。但是我的工作任务比这些要深入一些。因此,只有自力更生努力了。-_- 不过其中还是借助一些网络朋友的文章内容。特此声明。完整代码如下: 
     
    //配置IIS系统#if !defined _UNICODE#define _UNICODEint CSetupIIS::ConfigDirectory(LPCTSTR VirtualDirName, LPCTSTR Path, LPCTSTR ScriptMapsName){       // TODO: Add extra validation here       ::CoInitialize(NULL);         //初始化COM组件       IADsContainer* iContainer;              IADs* iAds;       if(S_OK==ADsGetObject(L"IIS://localhost/w3svc",IID_IADsContainer,(void**)&iContainer))        {              //等到默认站点               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(VirtualDirName));                                                                                    //建立虚拟目录                             if(iContainer->Create(_bstr_t("IIsWebVirtualDir"), _bstr_t(VirtualDirName),(IDispatch**)&iAds)==S_OK)                            {                                   //设置虚拟目录的属性                                    iAds->Put(_bstr_t("AccessRead"),_variant_t("True"));      //可读属性                                   //                                 iAds->Put(_bstr_t("AccessWrite"),_variant_t("True"));      //可写属性,默认关闭                                   iAds->Put(_bstr_t("EnableDefaultDoc"),_variant_t("True"));                                          iAds->Put(_bstr_t("AppAllowDebugging"),_variant_t("True"));     //应用程序允许调试                                   iAds->Put(_bstr_t("AccessScript"),_variant_t("True"));    //执行许可属性                                   iAds->Put(_bstr_t("AppFriendlyName"),_variant_t(VirtualDirName));  //应用程序名                                   iAds->Put(_bstr_t("DefaultDoc"),_variant_t("index.htm"));                                   iAds->Put(_bstr_t("AppIsolated"),_variant_t("2"));                                               iAds->Put(_bstr_t("Path"),_variant_t(Path));       //虚拟目录物理的根目录                                   iAds->Put(_bstr_t("ScriptMaps"),_variant_t(ScriptMapsName));                                                                      OLECHAR * arrFunName[]={L"AppCreate"};   //定义com的函数名称                                   DISPID dispID;                                   iContainer->GetIDsOfNames(IID_NULL,arrFunName,1,                                          LOCALE_SYSTEM_DEFAULT,&dispID);      //取得DISPID值,由dispID返回                                   VARIANTARG v[1];                                   v[0].vt=VT_BOOL;       v[0].boolVal=TRUE;    //AppCreate的参数负值,                                   DISPPARAMS params={v,NULL,1,0};                  //定义DISPPARAMS参数                                   VARIANT vResult;                                   iAds->Invoke(dispID,IID_NULL,LOCALE_SYSTEM_DEFAULT,                                             DISPATCH_METHOD,&params,&vResult,NULL,NULL);    //开始调用方法                                                                      iAds->SetInfo();                                   iAds->Release();        //释放iAds指针                                   iAds->Release();                                                                      iContainer->Release();   //释放iContainer对象指针                                   iContainer->Release();//                                 AfxMessageBox("IIS Setup ok");                                   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;          ::CoUninitialize();       //结束COM调用}#endif 
     
    IIS配置,这一部分涉及到了Windows 活动目录的ADSI编程。据说这是唯一跟IIS交互的途径。先要建立虚拟目录,这使用到了IisWebVirtualDir对象,他有众多的属性以及方法。使用:if(iContainer->Create(_bstr_t("IIsWebVirtualDir"), _bstr_t(VirtualDirName),(IDispatch**)&iAds)==S_OK) 来建立虚拟目录。通过方法Put以下各个属性来设置我们的虚拟目录的功能。iAds->Put(_bstr_t("AccessRead"),_variant_t("True")); //可读属性//iAds->Put(_bstr_t("AccessWrite"),_variant_t("True"));     //可写属性,默认关闭iAds->Put(_bstr_t("EnableDefaultDoc"),_variant_t("True"));      iAds->Put(_bstr_t("AppAllowDebugging"),_variant_t("True"));  //应用程序允许调试iAds->Put(_bstr_t("AccessScript"),_variant_t("True"));      //执行许可属性iAds->Put(_bstr_t("AppFriendlyName"),_variant_t(VirtualDirName));      //应用程序名iAds->Put(_bstr_t("DefaultDoc"),_variant_t("index.htm"));iAds->Put(_bstr_t("AppIsolated"),_variant_t("2"));            iAds->Put(_bstr_t("Path"),_variant_t(Path));     //虚拟目录物理的根目录iAds->Put(_bstr_t("ScriptMaps"),_variant_t(ScriptMapsName)); 
    并且通过Idispatch::Invoke()函数来间接调用AppCreate方法。使虚拟目录生效。需要注意的地方是:这里使用了UNICODE,并且在使用IisWebVirtualDir对象的时候在Project->Setting菜单的link标签下面添上activeds.lib adsiid.lib,还要#include "activeds.h" 。另外还有一个函数重起IIS ResetIIS(),先调用命令net stop w3svc 停止IIS服务,再调用net start w3svc 启动IIS服务,按理说这两步也许是多余的,但是以防万一嘛!^_^ 我把这几个函数封装到一个类里面了,方便调用. 
    初写文章,错误难免,请指正。[email protected]
      

  4.   

    lzd(活着便精彩)
        谢谢你的热心 可是你刚刚贴的 我老早也知道了~~ 但是这个只能为IIS配置服务器 而我现在写的一个程序也做到了上面的功能 就是不能把所有IIS里的虚拟目录列出来 包括虚拟目录下的根文件 及根文件的遍历文件等等 也就是说不能和IIS一样 列出里面的文件 和属性 等等~~
      

  5.   

    有..IIS自身提供接口去控制..
    LZ看看http://codeproject.com/w2k/EasyIIS.asp就知道了.
      

  6.   

    http://codeproject.com/w2k/EasyIIS.asp 
    这个 讲的是服务器的个数列表 及路径 并不是 服务器里面虚拟目录的列表啊!~~