Delphi实现对IIS的操作

来源:互联网 发布:wifi流量监控软件 编辑:程序博客网 时间:2024/06/06 00:49
 
  1. unit RaIIS;
  2. interface
  3. uses
  4.   SysUtils, Classes, COMOBJ, windows;
  5. type
  6.   TRaIIS = class(TComponent)
  7.   private
  8.     fOnDeleteVirtualDirApp: TNotifyEvent;
  9.     fOnDeleteVirtualDir: TNotifyEvent;
  10.     fOnCreateVirtualDir: TNotifyEvent;
  11.   protected
  12.   public
  13.     constructor Create(AOwner: TComponent); override;
  14.     {检查是否存在DotNet FrameWork}
  15.     function CheckDotNetFramework: Boolean;
  16.     {删除虚拟目录应用程序名}
  17.     function DeleteVirtualDirApp(strVirtualDir: string): Boolean;
  18.     {删除虚拟目录}
  19.     function DeleteVirtualDir(strVirtualDir: string): Boolean;
  20.     {检测是否有虚拟目录}
  21.     function CheckVirtualDir(const strVirtualDir: string): Boolean;
  22.     {建立虚拟目录}
  23.     function CreateVirtualDir(const strVirtualDir, strDir, strAppName: string): Boolean;
  24.   published
  25.     property OnDeleteVirtualDirApp: TNotifyEvent read fOnDeleteVirtualDirApp write fOnDeleteVirtualDirApp;
  26.     property OnDeleteVirtualDir: TNotifyEvent read fOnDeleteVirtualDir write fOnDeleteVirtualDir;
  27.     property OnCreateVirtualDir: TNotifyEvent read fOnCreateVirtualDir write fOnCreateVirtualDir;
  28.   end;
  29. procedure Register;
  30. implementation
  31. procedure Register;
  32. begin
  33.   RegisterComponents('Rarnu Components', [TRaIIS]);
  34. end;
  35. { TRaIIS }
  36. function TRaIIS.CheckDotNetFramework: Boolean;
  37. var
  38.   SysDir: pchar;
  39. begin
  40.   GetMem(SysDir, 250);
  41.   GetSystemDirectory(SysDir, 250);
  42.   if not FileExists(SysDir + '/MSCOREE.DLL'then
  43.     Result := False
  44.   else
  45.     Result := True;
  46.   FreeMem(SysDir);
  47. end;
  48. function TRaIIS.CheckVirtualDir(const strVirtualDir: string): Boolean;
  49. var
  50.   WebSite, WebServer, WebRoot: Variant;
  51. begin
  52.   Result := True;
  53.   try
  54.     WebSite := CreateOleObject('IISNamespace');
  55.     WebSite := WebSite.GetObject('IIsWebService''localhost/w3svc');
  56.     WebServer := WebSite.GetObject('IIsWebServer''1');
  57.     WebRoot := WebServer.GetObject('IIsWebVirtualDir''Root');
  58.     WebRoot.GetObject('IIsWebVirtualDir', strVirtualDir);
  59.   except
  60.     Result := False;
  61.   end;
  62. end;
  63. constructor TRaIIS.Create(AOwner: TComponent);
  64. begin
  65.   inherited Create(AOwner);
  66. end;
  67. function TRaIIS.CreateVirtualDir(const strVirtualDir, strDir,
  68.   strAppName: string): Boolean;
  69. var
  70.   WebSite, WebServer, WebRoot, vdir: Variant;
  71. begin
  72.   Result := True;
  73.   try
  74.     WebSite := CreateOleObject('IISNamespace');
  75.     WebSite := WebSite.GetObject('IIsWebService''localhost/w3svc');
  76.     WebServer := WebSite.GetObject('IIsWebServer''1');
  77.     WebRoot := WebServer.GetObject('IIsWebVirtualDir''Root');
  78.     vdir := WebRoot.Create('IIsWebVirtualDir', strVirtualDir);
  79.     vdir.AccessRead := True;
  80.     vdir.AccessScript := True; //执行许可为纯脚本
  81.     vdir.DefaultDoc := 'index.aspx,index.asp'//默认文档
  82.     vdir.EnableDirBrowsing := False;
  83.     vdir.AppFriendlyName := strAppName; //应用程序名
  84.     vdir.Path := strDir;
  85.     vdir.AppCreate(True); //如果没有这句的话,虚拟目录就要人为的手工创建应用程序名
  86.     vdir.SetInfo;
  87.   except
  88.     Result := False;
  89.   end;
  90.   { ADs.Put('AccessRead', cbRead.Checked);      //設定各參數
  91.           ADs.Put('AccessWrite', cbWrite.Checked);
  92.           ADs.put('AccessScript',cbScript.Checked);
  93.           ADs.Put('AccessExecute',cbExecute.Checked);
  94.           ADs.put('EnableDirBrowsing',cbBrowse.Checked);
  95.           ADs.Put('Path', edtPath.text);
  96.           ADs.Put('DefaultDoc','Default.asp, Default.html, Default.htm, ndex.asp, Index.html, Index.htm, Home.asp, Home.Html, Home.htm');
  97.           ADs.Put('EnableDefaultDoc',True);//允許打開默認文件   }
  98.   {
  99.   VDir.Path:='d:/report';
  100.   VDir.AccessRead:=True;         //读取
  101.   VDir.AccessWrite:=False;        //写入
  102.   VDir.EnableDirBrowsing:=False;  //目录浏览
  103.   VDir.AccessSource:=True;       //脚本资源访问
  104.   VDir.AccessScript:=True;       //脚本
  105.   VDir.AccessExecute:=True;      //可执行 }
  106.   {
  107.   VDir.AccessRead := True;   //读取
  108.   VDir.AccessWrite :=True;  //写入
  109.   VDir.AccessExecute :=True;  //脚本和可执行文件
  110.   VDir.AccessScript:=True;   //纯脚本
  111.   VDir.EnableDirBrowsing :=True; //目录浏览
  112.   VDir.Path := 'F:/VariantTest'; //路径
  113.   VDir.AppCreate(True);
  114.   VDir.AppFriendlyName :='VariantTest'; //应用程序名
  115.   }
  116.   if Assigned(OnCreateVirtualDir) then
  117.     OnCreateVirtualDir(Self);
  118. end;
  119. function TRaIIS.DeleteVirtualDir(strVirtualDir: string): Boolean;
  120. var
  121.   WebSite, WebServer, WebRoot: Variant;
  122. begin
  123.   Result := True;
  124.   try
  125.     WebSite := CreateOleObject('IISNamespace');
  126.     WebSite := WebSite.GetObject('IIsWebService''localhost/w3svc');
  127.     WebServer := WebSite.GetObject('IIsWebServer''1');
  128.     WebRoot := WebServer.GetObject('IIsWebVirtualDir''Root');
  129.     WebRoot.Delete('IIsWebVirtualDir', strVirtualDir);
  130.   except
  131.     Result := False;
  132.   end;
  133.   if Assigned(OnDeleteVirtualDir) then
  134.     OnDeleteVirtualDir(Self);
  135. end;
  136. function TRaIIS.DeleteVirtualDirApp(strVirtualDir: string): Boolean;
  137. var
  138.   WebSite, WebServer, WebRoot, vdir: Variant;
  139. begin
  140.   Result := True;
  141.   try
  142.     WebSite := CreateOleObject('IISNamespace');
  143.     WebSite := WebSite.GetObject('IIsWebService''localhost/w3svc');
  144.     WebServer := WebSite.GetObject('IIsWebServer''1');
  145.     WebRoot := WebServer.GetObject('IIsWebVirtualDir''Root');
  146.     vdir := WebRoot.GetObject('IIsWebVirtualDir', strVirtualDir);
  147.     vdir.AppDelete;
  148.     vdir.SetInfo;
  149.   except
  150.     Result := False;
  151.   end;
  152.   if Assigned(OnDeleteVirtualDirApp) then
  153.     OnDeleteVirtualDirApp(Self);
  154. end;
  155. end.
原创粉丝点击