C# 求一段对IIS站点绑定域名信息的代码

loongchao 发布于 2012/06/25 22:44
阅读 1K+
收藏 0
IIS

求一段 C#获取IIS 绑定域名信息

比如我有3个站点,域名分别是: www.oschina.net | www.baidu.com | www.shovesoft.com

如何获取到这3个网址、或者读取一个iis的config文件。

ps: 我在iis上找了好久,只能找到操作虚拟根目录的一些操作,求有过经验的程序员分享分享!

加载中
0
火凌风
火凌风
有权限的话可以尝试读 C:\WINDOWS\system32\inetsrv\MetaBase.xml,然后分析下格式
loongchao
loongchao
这个配置文件好像没有站点域名捏,
0
明月惊鹊
明月惊鹊

给你贴一段vc的代码,俺不会c#。


#include   "stdafx.h " 
#include   <Iads.h> 
#include   <Adshlp.h> 
#include   <activeds.h> 
#pragma   comment(lib, "ActiveDS.lib ") 
#pragma   comment(lib, "adsiid.lib ") 
#include   "comdef.h " 
#include   <comutil.h> 
void   OnGetport() 
{//code     snippets     by     masterz     with     VC.NET2003,     Windows2003 
IADsContainer*   iContainer; 
IEnumVARIANT   *pEnum   =   NULL; 
LPUNKNOWN           pUnk   =   NULL; 
VARIANT               var; 
IDispatch         *pDisp   =   NULL; 
BSTR                     bstr; 
ULONG                   lFetch; 
IADs                   *pADs   =   NULL; 

IADs*   iAds; 
VARIANT   SC; 
char   s[5]; 
int   i=0; 
char   dirName[MAX_PATH]; 
VARIANT   path   ,   state,   sPort; 
if(ADsGetObject(L "IIS://localhost/w3svc ",IID_IADsContainer,(void**)&iContainer)==S_OK)   

//得到默认站点 
long   lCount   =   0; 
iContainer-> get_Count(&lCount); 
printf( "server   count   %d\n ",lCount); 
iContainer-> get__NewEnum(&pUnk); 

pUnk-> QueryInterface(IID_IEnumVARIANT,   (void**)   &pEnum); 
pUnk-> Release(); 
VariantInit(&var); 
VariantInit(&SC); 
//   Enumerate.   
int   i   =   0; 
lCount   =   0; 
HRESULT   hr   =   pEnum-> Next(1,   &var,   &lFetch); 
while(hr   ==   S_OK) 

if   (lFetch   ==   1) 

pDisp   =   V_DISPATCH(&var); 
pDisp-> QueryInterface(IID_IADs,   (void**)&pADs);   
pDisp-> Release(); 
pADs-> get_Name(&bstr); 
printf( "%d   name   %s\n ",i,(LPCSTR)(bstr)); 
hr   =   iContainer-> GetObject(_bstr_t( "IIsWebServer "),   
bstr,(IDispatch**)&iAds); 
if(SUCCEEDED(hr)) 

lCount++; 
iAds-> Release(); 


pADs-> Release(); 
i++; 

VariantClear(&var); 
hr   =   pEnum-> Next(1,   &var,   &lFetch); 
}; 
SysFreeString(bstr); 
pEnum-> Release(); 
printf( "correct   web   server   count   %d\n ",lCount); 

iContainer-> GetObject(_bstr_t( "IIsWebServer "),   
_bstr_t( "1 "),(IDispatch**)&iAds); 
if(iAds==NULL)   return   ; 
VariantInit(&sPort); 
hr=iAds-> Get(_bstr_t( "Serverbindings "),&sPort); 
if(SUCCEEDED(hr)) 

if(sPort.vt   ==VT_ARRAY|VT_VARIANT) 

SAFEARRAY*   psa   =   sPort.parray; 
VARIANT*   varArray=NULL; 
SafeArrayAccessData(psa,(VOID**)&varArray); 
UINT   uDim   =   SafeArrayGetDim(psa); 
if(1==uDim) 

long   lLbound,lRbound; 
SafeArrayGetLBound(psa,1,&lLbound); 
SafeArrayGetUBound(psa,1,&lRbound); 
for(long   i=lLbound;i <=lRbound;i++) 

if(varArray[i].vt==VT_BSTR) 

_bstr_t   bstmp(varArray[i].bstrVal,true); 
printf((LPCTSTR)bstmp); 


SafeArrayUnaccessData(psa); 



iAds-> Release(); 


void   main() 

CoInitialize(NULL); 
OnGetport(); 
CoUninitialize(); 
}

0
北落
北落
没做过这个
返回顶部
顶部