【发布时间】:2011-05-31 07:48:11
【问题描述】:
目前我正在编写一小段代码来获取远程系统中 IIS 上托管的 Web 服务列表,
现在的工作代码是:
string q2 = "select * from Win32_PerfFormattedData_W3SVC_WebService";
ManagementScope scope2 = new ManagementScope(string.Format(@"\\dtp-robaro2\{1}", host, ns), options);
// ns here is string ns = @"root\cimv2";
scope2.Connect();
ManagementObjectSearcher search2 = new ManagementObjectSearcher(scope, new ObjectQuery(q2));
foreach (ManagementObject mo in search2.Get())
{
Console.WriteLine(mo.ClassPath);
Console.WriteLine(mo.GetText(TextFormat.Mof));
}
现在我想知道是否在我正在查询的远程系统上关闭了 WMI,那么有没有其他方法可以访问我通过上述代码获得的信息?
【问题讨论】:
-
你的问题没有意义。您的 WMI 查询实际上是在查询 performance counter for the W3SVC WebService counter。我对您要达到的目标感到困惑。您想列出操作系统上已安装的系统服务,还是在 IIS 本身中运行的网站?在任何一种情况下,使用该 WMI 查询都不太可能实现您想要的。
-
如果你看到我在代码下面写的那句话,那么它有意义吗?无论如何,我现在使用 SC 来获取服务列表,它工作正常,除了我无法检索远程系统上 IIS 中安装的网站列表:/任何指针?
-
您的问题没有意义,因为您编写的代码不会执行您想要的操作,即使 WMI 在远程系统上是可联系的。 SC.exe 只会带回服务器上已安装的服务,这也不是您想要的。您混淆了安装在服务器操作系统和 Web 服务上的服务。它们是完全不同的实体。