程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在Delphi中用ADSI創建IIS的虛擬目錄

在Delphi中用ADSI創建IIS的虛擬目錄

編輯:Delphi

先引入類型庫(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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved