Delphi中用Adsi创建IIS虚拟目录的方法
来源:岁月联盟
编辑:exp
时间:2009-05-01
先引入类型库(Project|Import Type Library)adsiis.dll、iisext.dll和activeds.tlb新建一个单元,声明。
unit ActiveDs; interface function ADsGetObject(const PathName: WideString; const GUID: TGUID; out I: IUnknown): HRESULT; stdcall; implementation function ADsGetObject; external activeds.dll name ADsGetObject; end. 方法一(参照C++)
var I: IADsContainer; ADs: IADs; begin if ADsGetObject(IIS://localhost/w3svc, IID_IADsContainer, IUnknown(I)) = S_Ok then begin ADs := IADs(I.GetObject(IIsWebServer, 1)); ShowMessage(ADs.ADsPath); if ADs.QueryInterface(IID_IADsContainer, I) = S_OK then begin ADs := IADs(I.GetObject(IIsWebVirtualDir, Root)); ShowMessage(ADs.ADsPath); if ADs.QueryInterface(IID_IADsContainer, I) = S_OK then begin ADs := IADs(I.Create(IIsWebVirtualDir, DelphiTest)); ADs.Put(AccessRead, True); ADs.Put(Path, c:Temp); ADs.SetInfo; end; end; end; end; 方法二(使用接口)
procedure TForm3.BitBtn4Click(Sender: TObject); var Disp: IDispatch; begin Disp := IISNamespace1.GetObject(IIsWebService, localhost/w3svc); Disp := (Disp as IADsContainer).GetObject(IIsWebServer, 1); Disp := (Disp as IADsContainer).GetObject(IIsWebVirtualDir, Root); Disp := (Disp as IADsContainer).Create(IIsWebVirtualDir, DelphiADSITest); (Disp as IADs).Put(AccessRead, True); (Disp as IADs).Put(Path, c:ADSITest); (Disp as IADs).SetInfo; end; 方法三(使用Variant,就是类似VB和ASP的方法)
procedure TForm2.BitBtn1Click(Sender: TObject); var WebSite, WebServer, WebRoot, VDir: Variant; begin WebSite := CreateOleObject(IISNamespace); WebSite := WebSite.GetObject(IIsWebService, localhost/w3svc); WebServer := WebSite.GetObject(IIsWebServer, 1); WebRoot := WebServer.GetObject(IIsWebVirtualDir, Root); VDir := WebRoot.Create(IIsWebVirtualDir, VariantTest); VDir.AccessRead := True; VDir.Path := C:Test; VDir.SetInfo; end;
| | | |