首页  编辑  

Delphi中用Adsi创建IIS虚拟目录

Tags: /超级猛料/Web.互联网开发技术/   Date Created:

Delphi中用Adsi创建IIS虚拟目录

  先引入类型库(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;

在IIS中建立FTP虚拟目录:

procedure CreateFtpVDir(VDirName, Path: string);

var

 Site, Server, VRoot, VDir: Variant;

begin

 Site := CreateOleObject('IISNamespace');

 Site := Site.GetObject('IIsFtpService', 'localhost/MSFTPSVC');

 Server := Site.GetObject('IIsFtpServer', '1');

 VRoot := Server.GetObject('IIsFtpVirtualDir', 'Root');

 

 VDir := VRoot.Create('IIsFtpVirtualDir', VDirName);

 VDir.Path := Path;

 VDir.AccessRead := true;

 VDir.AccessWrite := true;

 VDir.SetInfo;

 

 Site := Unassigned;

 Server := Unassigned;

 VRoot := Unassigned;

 VDir := Unassigned;

end;