如题!~
有没有高手知道 iis中怎么样把IIS里的虚拟目录给列出来比如我的IIS里面有
aa和bb两个虚拟目录 我想在我的vc程序里 这样列出来
虚拟目录:aa
路径:D://****
脚本增援访问:√
读取:√
写入:×
------------
虚拟目录:aa
路径:F://****
脚本增援访问:√
读取:√
写入:×等等类似的!~ 有没有这方面的资料可供小弟参考的~谢了!~
有没有高手知道 iis中怎么样把IIS里的虚拟目录给列出来比如我的IIS里面有
aa和bb两个虚拟目录 我想在我的vc程序里 这样列出来
虚拟目录:aa
路径:D://****
脚本增援访问:√
读取:√
写入:×
------------
虚拟目录:aa
路径:F://****
脚本增援访问:√
读取:√
写入:×等等类似的!~ 有没有这方面的资料可供小弟参考的~谢了!~
我想在我的vc程序里 这样列出来
虚拟目录:aa
路径:D://****
脚本增援访问:√
读取:√
写入:×
------------
虚拟目录:bb
路径:F://****
脚本增援访问:√
读取:√
写入:×
使用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,¶ms,&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]
谢谢你的热心 可是你刚刚贴的 我老早也知道了~~ 但是这个只能为IIS配置服务器 而我现在写的一个程序也做到了上面的功能 就是不能把所有IIS里的虚拟目录列出来 包括虚拟目录下的根文件 及根文件的遍历文件等等 也就是说不能和IIS一样 列出里面的文件 和属性 等等~~
LZ看看http://codeproject.com/w2k/EasyIIS.asp就知道了.
这个 讲的是服务器的个数列表 及路径 并不是 服务器里面虚拟目录的列表啊!~~