用delphi怎样实现:创建一个IIS 虚拟目录您知道怎样编码吗?
-----------------------
在期待着您的答案
真心谢谢您

解决方案 »

  1.   

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