2009-11-16 42 views
0

我有一个应用程序,它使用DirectoryEntry对象(在System.DirectoryServices中)访问有关在远程计算机上的IIS上运行的网站的信息。替代本地安装IIS以远程访问IIS?

任何运行该应用程序的客户机都需要安装IIS,或者应用程序在访问IIS信息时引发System.Runtime.InteropServices.COMException。

有没有一种方法,我可以只包括一个DLL,添加引用,或类似的东西能够访问该信息,而无需客户端机器安装IIS?或者是否有更好的方式来访问那些也会绕过这个需求的信息(也许没有System.DirectoryServices)?

编辑:再次看到这个问题,并看到问题herehere,我相信它是不可能使用DirectoryServices获取此信息。我会打开它的替代方案建议,也许有关WBEM脚本的更多信息?

回答

1

所以我所知道的是,你试图从远程IIS服务器获取网站信息,但试图获取该信息的客户端必须安装IIS以便能够查询这些远程系统。这不是因为它使用某种网络应用来获取信息;它使用了安装IIS时安装的一些功能。

你以后有什么样的信息?您不能使用针对IIS计算机的WBEM脚本来获取您之后的信息吗?

+0

我不知道,什么是WBEM脚本? ;)我试图获取在IIS中运行的任何网站的文件路径和网站名称/友好名称。除了要求在客户端上安装IIS之外,DirectoryServices还是很棒的。 – 2009-11-16 15:29:18

0

经过进一步研究:

克里斯谈论WMI脚本和System.Management命名空间,这是你连接到IIS 6或以上罚款,只要工作。

DirectoryServices需要安装IIS,因为它向ADSI添加了额外的位,允许它查询IIS。另外,如果您使用IIS 5(Windows XP)或IIS 7(Windows 7)来获取正确的ADSI组件,则需要安装IIS 6兼容性管理器。

IIS 7有一个最后的选择,它是Microsoft.Web.Administration命名空间。

不幸的是,在我的方案中,我需要同时使用IIS 5和IIS 6,这意味着DirectoryServices是获得我需要的唯一方法。幸运的是,我相信只需要安装一个兼容性管理器而不是整个IIS服务器(希望这是Windows XP的一个选项......)

接受Chris作为WBEM建议的答案,尽管我可以在这种情况下不要使用它!