通过ADSI操作非本地计算机的IIS服务问题(含代码)
各位大虾:
小弟近日遇到一个问题!需要通过程序直接对另外一台计算机上的IIS进行设置,可以直接添加、修改、删除另一台服务器上的站点,两台机器是在一个域中。我现在已经做好了添加本地IIS的程序,但是无法直接操作另一台机器。下面是我的代码!
void __fastcall TForm1::Button1Click(TObject *Sender)
{ AnsiString ip,domain,DiskPath;
IADsContainer *pCont=NULL;
IADs* pAds=NULL;
IADs* pVrAds=NULL;
IADsServiceOperations *pSrvOp;
IDispatch *pDisp = NULL;
IDispatch *pVrDisp = NULL;
HRESULT hr;
AnsiString WNumer=IntToStr(random(1000)); //È¡Ò»¸öËæ»úÊý½¨Á¢Õ¾µã
ip="172.16.48.34";
domain="www.youname.com";
DiskPath="C:\\Inetpub";
String newBindings=ip+":80:"+domain;
hr=ADsGetObject(L"IIS://lengxm-pc/w3svc",IID_IADsContainer,(void**)&pCont);
/* »ñµÃWebServer */
if(ADsGetObject(L"IIS://lengxm-pc/w3svc",IID_IADsContainer,(void**)&pCont)==S_OK)
{ //´´½¨Õ¾µã
if(pCont->Create(L"IIsWebServer",(wchar_t*)WideString(WNumer),&pDisp)==S_OK)
{
pDisp->QueryInterface(IID_IADs, (void**)&pAds);
pDisp->QueryInterface(IID_IADsServiceOperations, (void**)&pSrvOp);
pAds->Put(L"ServerSize",Variant(int(1)));
pAds->Put(L"ServerComment",Variant(String("xiwei")));//·þÎñÆ÷×¢ÊÍ£¬Ã»Ì«¶àÓô¦£¬xiweiÎÒµÄÃû×Ö
pAds->Put(L"ServerBindings",Variant(String(newBindings)));
pAds->SetInfo();
file://´´½¨Ö÷Ŀ¼
pCont->GetObject(L"IIsWebServer",(wchar_t*)WideString(WNumer),&pDisp);//µÃµ½¸Õ²Å´´½¨µØÍøÕ¾
if(pDisp->QueryInterface(IID_IADsContainer,(void**)&pCont)==S_OK)
{
if(pCont->Create(L"IIsWebVirtualDir",L"Root",&pVrDisp)==S_OK)
{
pVrDisp->QueryInterface(IID_IADs, (void**)&pVrAds);
pVrAds->Put(L"AccessRead",Variant(BOOL("True")));
pVrAds->Put(L"AccessWrite",Variant(BOOL("True")));
pVrAds->Put(L"AccessScript",Variant(BOOL("True")));
pVrAds->Put(L"EnableDirBrowsing",Variant(BOOL("True")));
pVrAds->Put(L"Path",Variant(String(DiskPath)));
pVrAds->Put(L"AppRoot",Variant(String(DiskPath)));
pVrAds->SetInfo();
pVrAds->Release();
pAds->Release();
pCont->Release();
}
// file:Æô¶¯Ð½¨µÄWebServer
pSrvOp->Start();
pSrvOp->Release();
}
}
}
}
呵呵!当然大部分也是拷贝别人的呵呵!希望各位大侠不吝赐教啊!