当前位置: 首页 > backend >正文

Delphi创建IIS虚拟目录的方法

Windows IIS

服务安装后配置很麻烦,想像一下你的客户不懂这些配置,你又烦于这些流水线式的配置,如果写一个工具实现一键部署显得那么高档,逼格高的一批。

以下实现Delphi创建IIS虚拟目录的方法。


具体代码

unit MainUnt;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, FileCtrl, Buttons,Activeds_TLB;typeTIISConfigFrm = class(TForm)edtAlias: TEdit;Label1: TLabel;dlbIIS: TDirectoryListBox;dcbIIS: TDriveComboBox;Label2: TLabel;edtPath: TEdit;GroupBox1: TGroupBox;cbRead: TCheckBox;cbScript: TCheckBox;cbExecute: TCheckBox;cbWrite: TCheckBox;cbBrowse: TCheckBox;bbtOK: TBitBtn;lblPath: TLabel;procedure dlbIISChange(Sender: TObject);procedure bbtOKClick(Sender: TObject);procedure FormCreate(Sender: TObject);private{ Private declarations }public{ Public declarations }end;function ADsGetObject(const PathName: WideString; const GUID:TGUID; out I: IUnknown): HRESULT; stdcall;varIISConfigFrm: TIISConfigFrm;implementation{$R *.dfm}function ADsGetObject;external 'ActiveDS.dll' name 'ADsGetObject';procedure TIISConfigFrm.dlbIISChange(Sender: TObject);beginedtPath.Text:=dlbIIS.Directory;end;procedure TIISConfigFrm.bbtOKClick(Sender: TObject);varI: IADsContainer;ADs: IADs;beginif Length(Trim(edtAlias.Text))=0 then beginApplication.MessageBox('别名不可以为空!','警告');Exit;end;if Length(Trim(edtPath.Text))=0 then beginApplication.MessageBox('请选定虚拟目录位置!','警告');Exit;end;if ADsGetObject('IIS://localhost', IID_IADsContainer, IUnknown(I)) = S_Ok then                 
begin //IIS已经安装if ADsGetObject('IIS://localhost/w3svc', IID_IADsContainer, IUnknown(I)) = S_Ok then begin //Web服务器存在ADs := IADs(I.GetObject('IIsWebServer', '1')); //取得服务if ADs.QueryInterface(IID_IADsContainer, I) = S_OK then begin //服务支持ADs := IADs(I.GetObject('IIsWebVirtualDir', 'Root')); //在Web服务器的Root下建立虚拟目录if ADs.QueryInterface(IID_IADsContainer, I) = S_OK then begin //服务支持tryADs := IADs(I.Create('IIsWebVirtualDir', edtAlias.Text)); //建立虚拟目录,别名为edtAlias.TextexceptApplication.MessageBox('这个别名已经存在,请选择另外的别名!','警告');Exit;end; //try exceptADs.Put('AccessRead', cbRead.Checked); //设定各参数ADs.Put('AccessWrite', cbWrite.Checked);ADs.put('AccessScript',cbScript.Checked);ADs.Put('AccessExecute',cbExecute.Checked);ADs.put('EnableDirBrowsing',cbBrowse.Checked);ADs.Put('Path', edtPath.text);ADs.Put('DefaultDoc','Default.asp, Default.html, Default.htm, ndex.asp, Index.html, Index.htm, Home.asp, Home.Html, Home.htm');ADs.Put('EnableDefaultDoc',True);//允许打开默认文件ADs.SetInfo; //保存参数Application.MessageBox('您的设定已经保存。','恭喜');end;end;end;end elseApplication.MessageBox('您的计算机上没有安装IIS或者您无权访问IIS。','警告');end;procedure TIISConfigFrm.FormCreate(Sender: TObject);beginedtPath.Text:=dlbIIS.Directory;end;end. 

http://www.xdnf.cn/news/3922.html

相关文章:

  • StampLock的源码详细剖析
  • SSE技术的基本理解以及在项目中的使用
  • 商场防损部绩效考核制度与管理方法
  • 【操作系统】读者-写者问题
  • Git_.gitignore文件简介及使用
  • C与指针——输入输出
  • 什么是constexpr?
  • 解决:前后端跨域请求
  • 【Redis】Java操作Redis之SpringDataRedis
  • 洛谷 P1495:【模板】中国剩余定理(CRT)/ 曹冲养猪
  • 数字化转型-4A架构之业务架构
  • 深度优先搜索(DFS)与广度优先搜索(BFS):图与树遍历的两大利器
  • 74HC123的电路应用场景
  • 一键获取当前项目的所有文件结构并保存到文本文件
  • 【数据结构与算法】常见排序算法详解(C++实现)
  • Java大师成长计划之第12天:性能调优与GC原理
  • word页眉去掉线
  • LLama-v2 权重下载
  • Linux 进程基础(二):操作系统
  • TensorFlow深度学习实战——基于循环神经网络的词性标注模型
  • 接口自动化测试项目框架详解
  • USB Type-C是不是全方位优于其他USB接口?
  • 在有限的内存中计算超限数据的重复值
  • c++ 之 cout
  • 【形式化验证】动态逻辑(DL)的定义解释与示例
  • Docker 渡渡鸟镜像同步站 使用教程
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.5 事务与锁机制(ACID特性/事务控制语句)
  • 强化学习机器人模拟器——QAgent:一个支持多种强化学习算法的 Python 实现
  • cuDNN 9.9.0 便捷安装-Windows
  • 67. Java 嵌套类 - 详解内部类