IIS控制大全

    本文主要描述的是如何利用Delphi对Web IIS进行控制,应该说常用的功能基本都有了。为了共用我已把它做成了一个独立的单元文件,大家可直接下载,这样我们只要直接在程序  uses uIIS就可以使用了,同时我也做了一个演示程序。
一、如何得到机器上IIS中所有的WEB虚拟站点.

function GetWebSiteList(slWebSiteList:TStrings):Integer; var   InstallPath: String;   WebSite, WebServer, WebRoot: Variant;   iCount: Integer;   Flag: Boolean; begin   Result := 0;   Flag :=True;   iCount :=1;   slWebSiteList.Clear;   while  Flag do   begin     try       WebSite :=CreateOLEObject('IISNamespace');       WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');       //iCount得到第几个站点的信息       WebServer := WebSite.GetObject('IIsWebServer', InttoStr(iCount));       slWebSiteList.Add(WebServer.ServerComment);       Result := iCount;       Inc(iCount);     except       Flag :=False;     end;   end; end;

二、如何得到IIS的安装目录(如C:/Inetpub/wwwroot)呢,

 

function GetWebSitePath(const iWebSiteIndex:integer=1):string; var   WebSite, WebServer, WebRoot: Variant; begin   WebSite :=CreateOLEObject('IISNamespace');   WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');   WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));   WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');   Result := WebRoot.Path; //这就是地址,C/Inetpub/wwwroot 或D:/Inetpub/wwwroot end;

三、如何得到WEB站点的IP和端口

function GetWebSiteIP(const iWebSiteIndex:Integer=1):string; var   InstallPath: String;   WebSite, WebServer, WebRoot: Variant;   ar: array of variant; begin   try     WebSite :=CreateOLEObject('IISNamespace');     WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');     WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));     ar :=    WebServer.ServerBindings;   //把IIS虚拟站点绑定的IP、端口、域名的值放入数组     Result := ar[0];    except    end; end;
四、如何判断IIS下是否存在某个虚拟目录

function VirtualDirIsExists(const strVirtualDir:string;                                           const iWebSiteIndex:Integer=1):Boolean; var   WebSite, WebServer, WebRoot, VDir: Variant;   Flag: Boolean; begin   Result := False;   Flag :=True;   WebSite :=CreateOLEObject('IISNamespace');   WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');   WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));   WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');   try     vdir := WebRoot.GetObject('IIsWebVirtualDir', strVirtualDir);     Result := True;   except     //如果出错则代表不存在此虚拟目录;     Result := False;   end; end;
五、如何创建 IIS 虚拟目录:
  

function CreateVirtualDir(const strVirtualDir,strDir,AppName:string;                                           const iWebSiteIndex:Integer=1):Boolean; var   WebSite, WebServer, WebRoot, VDir: Variant; begin   try     WebSite := CreateOleObject('IISNamespace');     WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');     WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));     webserver.SetInfo;     WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');     VDir := WebRoot.Create('IIsWebVirtualDir', strVirtualDir);     //虚拟目录权限设置     VDir.AccessRead := True;   //读取     VDir.AccessWrite := False;  //写入     VDir.AccessExecute := False;  //脚本和可执行文件     VDir.AccessScript := True;   //纯脚本     VDir.EnableDirBrowsing := False; //目录浏览     VDir.Path := strDir;     VDir.AppCreate(True);  //如果没有这句的话,虚拟目录就要人为的手工创建应用程序名     VDir.AppFriendlyName :=AppName; //应用程序名     VDir.SetInfo;     Result := True;   except     Result := False;   end; end; //附虚拟目录的属性: //有网友问我为什么前面的创建虚拟目录的例子执行权限都是无,看了一下自己写滴,确实有一些属性没有设置,现贴出一些常用属性供参考 {   VDir.AccessRead := True;   //读取   VDir.AccessWrite := True;  //写入   VDir.AccessExecute := True;  //脚本和可执行文件   VDir.AccessScript := True;   //纯脚本   VDir.EnableDirBrowsing := True; //目录浏览   VDir.Path := 'F:/VariantTest'; //路径   VDir.AppCreate(True);   VDir.AppFriendlyName :='VariantTest'; //应用程序名 }

六、如何删除虚拟目录

function DeleteVirtualDir(const strVirtualDir: string;const iWebSiteIndex:Integer=1): Boolean; var   WebSite, WebServer, WebRoot,vdir: Variant; begin   Result := True;     try     WebSite := CreateOleObject('IISNamespace');     WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');     WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));     WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');     WebRoot.Delete('IIsWebVirtualDir',strVirtualDir);         except     Result := False;   end;   end;

七、如何删除虚拟目录应用程序名

function DeleteVirtualDirApp(const strVirtualDir: string;const iWebSiteIndex:Integer=1): Boolean; var   WebSite, WebServer, WebRoot,vdir: Variant; begin   Result := True;   try     WebSite := CreateOleObject('IISNamespace');     WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');     WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));     WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');     vdir :=WebRoot.GetObject('IIsWebVirtualDir', strVirtualDir);     vdir.AppDelete;     vdir.SetInfo;   except     Result := False;   end; end;

八、如何通过程序控制默认WEB站点的例子,三种状态2是运行,4是停止,6是暂停

//停止WEB站点 function StopWebServer(const iWebSiteIndex:Integer=1):Boolean; var   WebSite, WebServer: Variant; begin    try       WebSite :=CreateOLEObject('IISNamespace');       WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');       WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));       if string(WebServer.ServerState) ='2' then       begin         WebServer.Stop;         //Showmessage('停止服务成功');         Result := True;       end;    except       //Showmessage('停止服务失败');       Result := False;    end; end; //启动WEB站点 function StartWebServer(const iWebSiteIndex:Integer=1):Boolean; var   WebSite, WebServer: Variant; begin     try       WebSite :=CreateOLEObject('IISNamespace');       WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');       WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));       if string(webserver.ServerState) ='4' then       begin         WebServer.Start;         //Showmessage('启动服务成功');         Result := True;       end;     except       //Showmessage('启动服务失败');       Result := False;     end; end; //暂停WEB站点 function PauseWebServer(const iWebSiteIndex:Integer=1):Boolean; var   WebSite, WebServer: Variant; begin   try     WebSite :=CreateOLEObject('IISNamespace');     WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');     WebServer := WebSite.GetObject('IIsWebServer', IntToStr(iWebSiteIndex));     if string(WebServer.ServerState) ='2' then     begin       WebServer.Pause;       //Showmessage('暂停服务成功');       Result := True;     end;   except     //Showmessage('暂停服务失败');     Result := False;   end; end;

九、Q: 如何重启IIS  A:用IISRESET /? 命令

function ControlIIS(const strAction:string='restart'):Boolean; //参数  /restart   停止并重起所有INTERNET服务 //      /start     启动所有INTERNET   服务 //      /stop      停止所有INTERNET服务 //      /reboot    重起计算机 //      /Status    显示所有INTERNET服务状态等等 var   sCmd:string; begin   sCmd:='IISReset/'+strAction;   try     WinExec(pchar(sCmd),SW_HIDE);     //ShellExecute(handle,'open',pchar(sCmd),'-s','   ',SW_HIDE);     Result := True;   except     //messagedlg('执行失败',mtinformation,[mbok],0);     Result := False;   end; end;

我已把它们做成了一个单元文件,大家可直接下载,这样你只要在程序  uses uIIS;就可以使用了。


而且我也做了一个演示程序:点击在新窗口中浏览此图片
演示程序下载:

转载于:https://www.cnblogs.com/xieyunc/archive/2009/05/02/9126607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值