Я запускаю исполняемый файл, используя этот код:
Process proc = new Process();
proc.StartInfo.FileName = executablePath;
proc.Start();
proc.WaitForInputIdle();
после этого вызова proc.Id
он дает мне целое число, которое не является реальным идентификатором процесса. В диспетчере задач есть еще один идентификатор для этого процесса, а также я использую MS UI Automation для доступа к этому приложению, которое также возвращает тот же идентификатор, что и в диспетчере задач. Итак, мой вопрос: как я могу получить реальный идентификатор процесса запущенного процесса?
UPDATE
Я узнал, что в Windows 7 он отлично работает и возвращает мне правильный ID, но не в Windows XP. В чем может быть причина?
СЦЕНАРИЙ
Сценарий приложения следующий. У меня есть встроенный HTTP-сервер, который реализован не мной (здесь является источником). Клиент подключается к веб-серверу и отправляет запрос на запуск программы. В обработчике запросов моего сервера я просто использую Process.start()
для запуска запрошенного приложения. В качестве веб-сервера программа создает потоки для каждого подключенного к ней клиентского сеанса (я предполагаю, что так, как я ее не писал). Может ли это как-то помочь идентифицировать проблему, поскольку она существует только в Windows XP X86 с пакетом обновления 3 (SP3)?