在delphi7.0中如何操作iis,如停止,重起,新一个虚拟目录,删除一虚拟目录等!谢谢!!

解决方案 »

  1.   

    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;
      

  2.   

    先引入类型库(Project|Import Type Library)adsiis.dll、iisext.dll和activeds.tlb可是这二个dll文件和一个tlb文件没有啊,我在网上找了好久,就是没有下载的地方,麻烦您帮我找找好吗?
      

  3.   

    方法三中:“WebSite := CreateOleObject('IISNamespace');“
    IISNamespace 这里新建一个对象是调delphi集成的组件吗,还是要添加.dll文件呢????有没有代码能够直接运行的呢???谢谢!不会帮我顶一下吧!!
      

  4.   

    var
     Disp: IDispatch;
    和var
     WebSite, WebServer, WebRoot, VDir: Variant;为什么这两个地方定义变量就出错了呢????
      

  5.   

    先引入类型库(Project|Import Type Library)adsiis.dll、iisext.dll和activeds.tlb可是这二个dll文件和一个tlb文件没有啊,我在网上找了好久,就是没有下载的地方,麻烦您帮我找找好吗?
    ------------
    你没有用过系统控件?你看看是不是有3个Active DS 开头的,它们的库文件就是这三个名字,安装它们
      

  6.   

    先引入类型库(Project|Import Type Library)adsiis.dll、iisext.dll和activeds.tlb这三个东东是系统自带的,你编程序本机最好安装好IIS
      

  7.   

    谢谢!!oysy(太阳之子)可是安装以后还是出错如下:
    var
     Disp: IDispatch;
    和var
     WebSite, WebServer, WebRoot, VDir: Variant;为什么这两个地方定义变量就出错了呢????
      

  8.   

    没有Uses ActiveX,Variants的Unit吧?
      

  9.   

    uses comobj;
    var
      InstallPath: String;
      WebSite, WebServer, WebRoot: Variant; 
    begin
        WebSite :=CreateOLEObject('IISNamespace');
        WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');
        WebServer := WebSite.GetObject('IIsWebServer', '1');
        if string(webserver.ServerState) ='2' then //如果为2则代表运行状态
          webserver.stop;// 停止
         if string(webserver.ServerState) ='4' then  //停止状态
        webserver.start;  //启动
          if string(webserver.ServerState) ='6' then  //暂停状态
        webserver.start;  //启动
      

  10.   

    本例是测试默认WEB,
    以上代码后半段是几种状态,请勿直接COPY建议楼主在GOOGLE中搜索ADSI,
      

  11.   

    嗯?游民blog上说的是这个帖子?