当前位置 : 主页 > 编程语言 > java >

IIS控制大全

来源:互联网 收集:自由互联 发布时间:2022-10-26
本文主要描述的是如何利用Delphi对Web IIS进行控制,应该说常用的功能基本都有了。为了共用我已把它做成了一个独立的单元文件,大家可直接下载,这样我们只要直接在程序uses uIIS就可


    本文主要描述的是如何利用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;就可以使用了。


​​点击这里下载文件: uIIS.rar​​


而且我也做了一个演示程序:​​

IIS控制大全_function

​​演示程序下载:


​​点击这里下载文件: IIS_Demo.rar​​

网友评论