// by redice 09.06.15
// redice@163.com
// www.redicecn.cn
在VB中使用ADSI控制IIS要比VC简单许多。在“ 基于ADSI对IIS虚拟主机属性的读取和设置” 一文中就是使用VB实现的。有的时候由于项目需要,必须要在VC中来完成对IIS的操作,最近在一个VC项目中需要对IIS下所有的站点进行列举,并要获取它们的默认路径。经过一番辛苦的查询,最后终于在CodeProject上找到了解决方案(一个叫做easyiis的开源程序)。
// 枚举本地站点
void newtaskdlg::LoadSiteList()
{
::CoInitialize(NULL); //初始化COM组件
IADsContainer *pServer = NULL;
HRESULT hr = ADsGetObject(L"IIS://localhost/w3svc",IID_IADsContainer, (void**)&pServer);
if (!SUCCEEDED(hr))
{
AfxMessageBox("链接IIS失败! 是否安装了IIS? IIS服务是否启动?");
return;
}
IEnumVARIANT *pEnum = NULL;
hr = ADsBuildEnumerator(pServer, &pEnum );
if (SUCCEEDED(hr))
{
_variant_t vSite;
ULONG lFetch;
IADs *pSite=NULL;
while(SUCCEEDED(ADsEnumerateNext( pEnum, 1, &vSite, &lFetch )) && lFetch == 1)
{
int item = 0;
hr = V_DISPATCH(&vSite)->QueryInterface(IID_IADs, (void**) &pSite);
if (SUCCEEDED(hr))
{
BSTR bstrClass;
pSite->get_Class(&bstrClass);
if(strcmp(CString(bstrClass),"IIsWebServer")==0)
{
_variant_t var;
BSTR strBuf=NULL;
CString csSiteName; // 站点id
pSite->get_Name(&strBuf);
csSiteName=strBuf;
CString csSiteComment; // 站点描述
pSite->Get(L"ServerComment",&var);
csSiteComment = var.bstrVal;
CString csSiteMemo;
csSiteMemo=csSiteComment + "(";
csSiteMemo+=csSiteName;
csSiteMemo+=")";
this->m_sitecombo.AddString(csSiteMemo.GetBuffer(0));
}
SysFreeString(bstrClass);
pSite->Release();
pSite = NULL;
}
}
}
else
{
AfxMessageBox("枚举IIS站点失败!");
}
if (pEnum)
{
ADsFreeEnumerator(pEnum);
}
pServer->Release();
pServer = NULL;
::CoUninitialize(); //结束COM调用
}
// 根据SiteId获取站点日志路径
CString GetSiteLogDir(CString csSiteId)
{
CString csSiteLogDir;
if(csSiteId.IsEmpty()) return csSiteLogDir;
::CoInitialize(NULL); //初始化COM组件
HRESULT hr;
IADs *pSite=NULL;
WCHAR AdsPath[1024]=L"IIS://localhost/w3svc/";
wcscat(AdsPath,ConvertLPCSTRToLPWSTR(csSiteId.GetBuffer(0)));
hr = ADsGetObject(AdsPath,IID_IADs,(void**)&pSite);
if (SUCCEEDED(hr) )
{
_variant_t var;
pSite->Get(L"LogFileDirectory",&var);
csSiteLogDir=var.bstrVal;
}
::CoUninitialize(); //结束COM调用
return csSiteLogDir;
}
关于IIS的还有很多操作,在easyiis源代码你可以找到这些问题的解决方案。
File: easyiis.zip
基于ADSI对IIS虚拟主机属性的读取和设置” (http://www.redicecn.cn/blogview.asp?Content_Id=173)
在VC中使用ADSI控制IIS
[日志分享]
[日志信息]
该日志于 2009-06-15 09:22 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “在VC中使用ADSI控制IIS” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!! (尊重他人劳动,你我共同努力)
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢