获取没有WMI的服务信息

时间:2011-05-31 07:48:11

标签: c# wmi

目前我正在编写一小段代码来获取远程系统中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,那么有没有其他方法可以访问上述代码所获得的信息?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我已将此文件从VB.Net转换为C#,因此可能不完全正确,但这可以满足您的需求:

public List<string> GetSites(string MachineName)
{

    List<string> siteList = new List<string>();

    DirectoryEntry iis = new DirectoryEntry(string.Format("IIS://{0}/w3svc/1/root", MachineName));    

    foreach (DirectoryEntry site in iis.Children) {

        if (site.SchemaClassName == "IIsWebServer") {
            siteList.Add(site.Properties("ServerComment").Value.ToString());

        }
    }

    return siteList;

}