在Delphi中用ADSI创建IIS的虚拟目录

原创 2001年03月25日 14:26:00

先引入类型库(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;
end;

如何:在IIS 中创建和配置虚拟目录

http://yxiaoli.2009.blog.163.com/blog/static/12994237320104206320337/ 如何:在IIS 中创建和配置虚拟目录 此页面仅适...
  • mituan1234567
  • mituan1234567
  • 2014年08月12日 13:02
  • 1028

用Delphi创建IIS虚拟目录

//可以添加ACTIVE DS TYPE LIBRARY unit MainUnt;   interface   uses   Windows, Messages, SysUtils,...
  • u014802181
  • u014802181
  • 2015年10月22日 10:39
  • 137

IIS7中的站点、应用程序和虚拟目录详细介绍

这里说的不是如何解决路径重写或者如何配置的问题,而是阐述一下站点(site),应用程序(application)和虚拟目录(virtual directory)概念与作用,已及这三个东西在IIS6与I...
  • whatday
  • whatday
  • 2014年11月21日 09:42
  • 2655

利用iis虚拟目录实现文件服务器功能(分布式存储)

通过网站上传文件保存到统一的文件服务器上。 服务器说明: 1.文件服务器以下称为FilesServer,IP地址为:192.168.1.213 2.Web服务器为以下称为WebS...
  • qq_27376871
  • qq_27376871
  • 2016年08月02日 13:14
  • 1782

VS中 无法创建虚拟目录

从前就有个疑问了,为什么我拉取别人写好的代码后就可以在IIS里面生成一个网站呢?这里所谓的生成网站,是指包含了所有源代码文件的网站;相对地,发布网站,就是指包含被编译的源文件所得到的DLL文件的网站。...
  • Sven1520
  • Sven1520
  • 2016年12月23日 22:22
  • 4611

IIS站点/虚拟目录中访问共享目录(UNC)

UNC是 Universal Naming Convention 的简称,也叫通用命名规范、通用命名约定。 网络(范指局域网)上资源的完整位置名称。 格式为 \\servername\sharen...
  • minsenwu
  • minsenwu
  • 2013年11月08日 22:15
  • 2177

NAS—IIS虚拟目录

之前项目中有上传图片视频等资源的功能,都是把资源上传到解决方案的目录下,如果越来越多站的空间也越来越大,实在不可取。后来用到了NAS这样一个东西,一个网络存储器,感觉像一个云盘的实体。把所有的资源放在...
  • u013046097
  • u013046097
  • 2016年08月30日 20:59
  • 1392

IIS - 虚拟目录与应用程序的异同

在Windows 7 IIS7中,对服务器建立站点后,有二种添加子站点的方式 A. 虚拟目录 B. 应用程序 简单总结下二者之间的异同 A.虚拟目录     虚拟目录是指在站点下建立...
  • xiaoqijun
  • xiaoqijun
  • 2013年11月17日 20:48
  • 8639

尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost:…… .要打开此项目,需要配置虚拟目录……

开始在网上找了资料: 其一:是直接打开vs,然后在文件菜单,然后打开那里点击网站,然后打开你所要打开的网站,这个办法可行,是可以打开 但是,我的项目里面出现很多错误。 其二:机器装了...
  • wanlaoma
  • wanlaoma
  • 2014年02月09日 23:17
  • 12820

ADSI接口获取AD域服务器账户列表[VC++]

之前用ldap_open API系列,在bind的时候老是提示无效认证,最后msdn还找到了一种COM接口获取AD域控服务器用户列表的方法,代码我在例子的基础上修改了下,测试通过,能获取到: // ...
  • hurryboylqs
  • hurryboylqs
  • 2015年04月21日 14:52
  • 3315
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Delphi中用ADSI创建IIS的虚拟目录
举报原因:
原因补充:

(最多只允许输入30个字)