C # WMI дифференциация процесса? - PullRequest
5 голосов
/ 09 апреля 2010

Сценарий

У меня есть метод, который возвращает список процессов, использующих WMI. Если у меня запущены 3 процесса (все из которых являются приложениями C #) - и у них всех одинаковое имя процесса, но разные аргументы командной строки, как я могу различить их, если я хочу их запустить или прекратить!?

Мысли

Насколько я вижу, я физически не могу различить их, по крайней мере, без необходимости использовать Ручку, но это не говорит мне, какой из них был уволен, потому что другие все еще будут сидеть там с тем же имя ........

.... действительно в тупик, помощь очень признателен!

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

Создайте процесс, используя технику, которая дает вам идентификатор процесса в качестве выходного параметра. Э.Г.

Затем вы можете использовать это значение, чтобы действительно знать, какую версию процесса вы хотите убить позже. Э.Г.

  • WMI: Получить экземпляр Win32_Process, соответствующий ProcessId, вызвать Terminate ()
  • .NET: получить экземпляр процесса, используя GetProcessById, вызвать Kill , а затем WaitForExit

(Обратите внимание, что если процесс останавливается до того, как вы его уничтожите, ОС может назначить этот же идентификатор процесса новому процессу, поэтому, конечно, вам нужно будет дважды проверить, что вы убиваете правильный, например, проверить имя процесса тоже)

1 голос
/ 09 апреля 2010

WMI Win32_ProcessObject имеет свойство CommandLine , которое вы можете использовать, если, как вы знаете, это различает экземпляры.

string query = “Select * From Win32_Process Where Name = “ + processName;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();

foreach (ManagementObject obj in processList)
{
     string cmdLine = obj.GetPropertyValue("CommandLine").ToString();

     if (cmdLine == "target command line options")
     {
          // do work
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...