Процесс запущен на удаленной машине?

У меня есть три удаленных ПК, к которым я удаленно подключаюсь. Я пытаюсь написать простое приложение для Windows, которое будет отображать в одном окне, работает ли конкретный процесс на любой из машин, например.

Server1: Chrome не работает

Server2: Chrome IS работает

Server3: Chrome IS работает

Я использовал WMI и C#. На данный момент у меня есть вот что:

            ConnectionOptions connectoptions = new ConnectionOptions();

            connectoptions.Username = @"domain\username";
            connectoptions.Password = "password";

            //IP Address of the remote machine
            string ipAddress = "192.168.0.217";
            ManagementScope scope = new ManagementScope(@"\\" + ipAddress + @"\root\cimv2");
            scope.Options = connectoptions;
            //Define the WMI query to be executed on the remote machine
            SelectQuery query = new SelectQuery("select * from Win32_Process");

            using (ManagementObjectSearcher searcher = new
                        ManagementObjectSearcher(scope, query))
            {

                ManagementObjectCollection collection = searcher.Get();
                foreach (ManagementObject process in collection)
                {
                    // dwarfs stole the code!! :'(                        
                }
            }

Я думаю, что все настроено правильно, но если я MessageBox.Show(process.ToString()) внутри цикла foreach, я получаю целую кучу окон сообщений со следующим текст:

\\username\root\cimv2:W32_Process.Handle="XXX"

Я немного застрял. Есть ли способ «перевести» это XXX в имя процесса? Или, как на самом деле получить имена процессов, чтобы я мог использовать оператор if, чтобы проверить, является ли это процессом «chrome»?

Или... моя реализация избыточна? Есть ли более простой способ сделать это?

Большое спасибо!

7
задан Krzysiek 1 June 2012 в 16:40
поделиться