Y yangxiangpao Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-23 #1 到底有没有安装iis的windows API , 有的话是什么,没有的话也请大家帮忙 ,用delphi实现iis的安装 急!!!
X xiammy Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-23 #2 aimingoo (2000-09-25 14:45:47) <br>大师的方法需要安装Script Host。在WinNT SP6+IE4.x的环境中是不带的,需要另装Script Host <br>或者安装IE5.x。这需要注意。 <br><br>下面公布我的方法。——原本是昨天公布的,不过太忙。哈哈,就…… <br><br>首先确认,API是绝对解决不了这些问题的,必须使用COM,使用ADSI接口。 <br>在WinNT/System32下的adsiis.tlb是MS封装的ADSI公开接口,非常的全,也非常之庞大。你可 <br>以使用它,也可以去这儿下载一个公开源码的ADSI COM控件。但是,它是C写的。 <br> ftp://ftp.15seconds.com/990107.zip <br>打开990107.zip,用regsvr32.exe myadsi.dll注册这个控件。然后,你就可以开始用Delphi <br>干活儿了。 <br><br>一、生成接口文件 <br>------------------------------------------------------------------------ <br>由于myADSI.dll不是OCX/EXE方式的ActiveX服务,所以,必须手工生成TLB接口文件。 <br>运行/Delphi/BIN目录的TLIBImp.exe文件。如下: <br> tlibimp -L+ MyADSI.dll <br> // L+参数是生成能够在Delphi的IDE环境中使用的可视组件。可选。 <br> // 如果你使用adsiis.tlb,也需要用tlibimp来生成接口文件。 <br>这个控件的编写者有病,会将COM控件命名为Contorl,生成的Delphi类名叫TControl,与 <br>Delphi自己的一个控件会冲突,所以你需要打开生成的myADSILib_TLB.pas文件,将所有的 <br>TControl替换成TIISControl。就成了。——你也可以不替换,但出了问题可被怪我。 <br><br>二、安装组件 <br>------------------------------------------------------------------------ <br>安装myADSILib_TLB.pas到组件板,与普通操作无二。不讲了。 <br><br>三、编程 <br>------------------------------------------------------------------------ <br>太简单了。 ^-^。下面假设控件名:IISConfig <br>var selectDir : integer; //示例中用来控制创建的虚拟目录类型。 <br>procedure TMainForm.Button1Click(Sender: TObject); <br>const //Permissions Const, From MSDN. <br> IISReadAccess = 1; <br> IISWriteAccess = 2; <br> IISExecuteAccess = 4; //(including ScriptAccess) <br> IISScriptAccess = 512; <br>var <br> VDirName : string; <br>begin <br> VDirName := Edit1.Text; <br> if (VDirName='') or (VDirName[1]='/') then <br> begin <br> showMessage('虚拟目录不能为空, 且第一个字符不能为''/''.'#$0D'请重新填写.'); <br> exit; <br> end; <br><br> IISConfig.Site := 1; //如果IIS中有多个Web Site,这里可选。 <br> IISConfig.Connect; <br> try <br> if BOOL(IISConfig.ExistsVDir(VDirName)) <br> then showMessage('对不起, 该虚拟目录已经存在.'#$0D'不能创建虚拟目录.') <br> else <br> case selectDir of <br> 1 : //普通目录 <br> begin <br> IISConfig.Permissions := IISReadAccess; <br> if not BOOL(IISConfig.CreateVDir(WideString(PBF.Folder), WideString(VDirName))) then <br> showMessage('对不起, 未知情况导致虚拟目录不能成功创建.'); <br> end; <br> 2 : //脚本目录 <br> begin <br> IISConfig.Permissions := IISExecuteAccess; <br> if not BOOL(IISConfig.CreateVDir(WideString(PBF.Folder), WideString(VDirName))) then <br> showMessage('对不起, 未知情况导致虚拟目录不能成功创建.'); <br> end; <br> end; <br> finally <br> IISConfig.Disconnect; <br> end; <br>end; <br><br>就这样啦。不难的。 <br>TIISControl主要有三个功能:CreateVDir(), ExistsVDir(), DeleteVDir()。 <br>OnStartPage()和OnEndPage()两个功能我也没有太搞明白,好象是设置ASP的起始和结束页的。 <br>Permissions设置的全部定义是: <br>{ //Define In MSDN <br> MD_ACCESS_READ 0x00000001 Allow read access. <br> MD_ACCESS_WRITE 0x00000002 Allow write access. <br> MD_ACCESS_EXECUTE 0x00000004 Allow file execution (includes script permission). <br> MD_ACCESS_SOURCE 0x00000010 Allow source access. <br> MD_ACCESS_SCRIPT 0x00000200 Allow script execution. <br> MD_ACCESS_NO_REMOTE_WRITE 0x00000400 Local write access only. <br> MD_ACCESS_NO_REMOTE_READ 0x00001000 Local read access only. <br> MD_ACCESS_NO_REMOTE_EXECUTE 0x00002000 Local execution only. <br> MD_ACCESS_NO_REMOTE_SCRIPT 0x00004000 Local host access only. } <br>但注意MyASDI中的Permissions是smallInt类型的。小有区别啦。 ^-^ <br><br>四、其它 <br>------------------------------------------------------------------------ <br>如果你要发布软件的话,当然不能要用户自已去运行regsvr32.exe来注册MyADSI.dll了。
aimingoo (2000-09-25 14:45:47) <br>大师的方法需要安装Script Host。在WinNT SP6+IE4.x的环境中是不带的,需要另装Script Host <br>或者安装IE5.x。这需要注意。 <br><br>下面公布我的方法。——原本是昨天公布的,不过太忙。哈哈,就…… <br><br>首先确认,API是绝对解决不了这些问题的,必须使用COM,使用ADSI接口。 <br>在WinNT/System32下的adsiis.tlb是MS封装的ADSI公开接口,非常的全,也非常之庞大。你可 <br>以使用它,也可以去这儿下载一个公开源码的ADSI COM控件。但是,它是C写的。 <br> ftp://ftp.15seconds.com/990107.zip <br>打开990107.zip,用regsvr32.exe myadsi.dll注册这个控件。然后,你就可以开始用Delphi <br>干活儿了。 <br><br>一、生成接口文件 <br>------------------------------------------------------------------------ <br>由于myADSI.dll不是OCX/EXE方式的ActiveX服务,所以,必须手工生成TLB接口文件。 <br>运行/Delphi/BIN目录的TLIBImp.exe文件。如下: <br> tlibimp -L+ MyADSI.dll <br> // L+参数是生成能够在Delphi的IDE环境中使用的可视组件。可选。 <br> // 如果你使用adsiis.tlb,也需要用tlibimp来生成接口文件。 <br>这个控件的编写者有病,会将COM控件命名为Contorl,生成的Delphi类名叫TControl,与 <br>Delphi自己的一个控件会冲突,所以你需要打开生成的myADSILib_TLB.pas文件,将所有的 <br>TControl替换成TIISControl。就成了。——你也可以不替换,但出了问题可被怪我。 <br><br>二、安装组件 <br>------------------------------------------------------------------------ <br>安装myADSILib_TLB.pas到组件板,与普通操作无二。不讲了。 <br><br>三、编程 <br>------------------------------------------------------------------------ <br>太简单了。 ^-^。下面假设控件名:IISConfig <br>var selectDir : integer; //示例中用来控制创建的虚拟目录类型。 <br>procedure TMainForm.Button1Click(Sender: TObject); <br>const //Permissions Const, From MSDN. <br> IISReadAccess = 1; <br> IISWriteAccess = 2; <br> IISExecuteAccess = 4; //(including ScriptAccess) <br> IISScriptAccess = 512; <br>var <br> VDirName : string; <br>begin <br> VDirName := Edit1.Text; <br> if (VDirName='') or (VDirName[1]='/') then <br> begin <br> showMessage('虚拟目录不能为空, 且第一个字符不能为''/''.'#$0D'请重新填写.'); <br> exit; <br> end; <br><br> IISConfig.Site := 1; //如果IIS中有多个Web Site,这里可选。 <br> IISConfig.Connect; <br> try <br> if BOOL(IISConfig.ExistsVDir(VDirName)) <br> then showMessage('对不起, 该虚拟目录已经存在.'#$0D'不能创建虚拟目录.') <br> else <br> case selectDir of <br> 1 : //普通目录 <br> begin <br> IISConfig.Permissions := IISReadAccess; <br> if not BOOL(IISConfig.CreateVDir(WideString(PBF.Folder), WideString(VDirName))) then <br> showMessage('对不起, 未知情况导致虚拟目录不能成功创建.'); <br> end; <br> 2 : //脚本目录 <br> begin <br> IISConfig.Permissions := IISExecuteAccess; <br> if not BOOL(IISConfig.CreateVDir(WideString(PBF.Folder), WideString(VDirName))) then <br> showMessage('对不起, 未知情况导致虚拟目录不能成功创建.'); <br> end; <br> end; <br> finally <br> IISConfig.Disconnect; <br> end; <br>end; <br><br>就这样啦。不难的。 <br>TIISControl主要有三个功能:CreateVDir(), ExistsVDir(), DeleteVDir()。 <br>OnStartPage()和OnEndPage()两个功能我也没有太搞明白,好象是设置ASP的起始和结束页的。 <br>Permissions设置的全部定义是: <br>{ //Define In MSDN <br> MD_ACCESS_READ 0x00000001 Allow read access. <br> MD_ACCESS_WRITE 0x00000002 Allow write access. <br> MD_ACCESS_EXECUTE 0x00000004 Allow file execution (includes script permission). <br> MD_ACCESS_SOURCE 0x00000010 Allow source access. <br> MD_ACCESS_SCRIPT 0x00000200 Allow script execution. <br> MD_ACCESS_NO_REMOTE_WRITE 0x00000400 Local write access only. <br> MD_ACCESS_NO_REMOTE_READ 0x00001000 Local read access only. <br> MD_ACCESS_NO_REMOTE_EXECUTE 0x00002000 Local execution only. <br> MD_ACCESS_NO_REMOTE_SCRIPT 0x00004000 Local host access only. } <br>但注意MyASDI中的Permissions是smallInt类型的。小有区别啦。 ^-^ <br><br>四、其它 <br>------------------------------------------------------------------------ <br>如果你要发布软件的话,当然不能要用户自已去运行regsvr32.exe来注册MyADSI.dll了。
X xiammy Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-23 #3 楼主不会是想自己安装IIS系统吧?这个是Windows完成的,且需要Windows安装盘支持。而且也不是IIS的API啊。
Y yangxiangpao Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-23 #4 我就是不清楚 ,公司要求安装的时候自动完成,要做成产品 ,就不能、让用户自己配啊,<br>至于能不能调我不知道。应该是象xiammy说的把,我试试 ,先谢谢
Y yangxiangpao Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-23 #6 WinNT/System32下的adsiis.tlb 没有啊 ,adsiis.dll也没啊
Y yangxiangpao Unregistered / Unconfirmed GUEST, unregistred user! 2006-10-23 #7 to xiammy WinNT/System32下的adsiis.tlb 没有