Получить сервисную информацию без WMI - PullRequest
0 голосов
/ 31 мая 2011

В настоящее время я пишу небольшой фрагмент кода, чтобы получить список веб-сервисов, размещенных на IIS в удаленной системе,

рабочий код прямо сейчас:

       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 ]

1 голос
/ 31 мая 2011

Использовать инструмент Сервисный контроль - SC.EXE

0 голосов
/ 02 июня 2011

Я преобразовал это из 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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...