У меня есть три удаленных ПК, к которым я удаленно подключаюсь. Я пытаюсь написать простое приложение для 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»?
Или... моя реализация избыточна? Есть ли более простой способ сделать это?
Большое спасибо!