Win32 API TerminateProcess () возвращает успех, но процесс не прекращается - PullRequest
0 голосов
/ 27 февраля 2019

Я использую TerminateProcess (), чтобы убить другой процесс (я знаю, что это не лучший способ, но это уже существующий код, который уже развернут).В большинстве случаев все работает, как и ожидалось, но на двух конкретных машинах процесс не прерывается, хотя TerminateProcess () возвращает ненулевое значение, что означает успех.

Мы пытались убить процесс издиспетчер задач, и он был убит.

В документации говорится, что процесс завершится только после того, как все операции ввода-вывода завершены или отменены, поэтому мы подумали, что, возможно, есть какая-то ожидающая операция ввода-вывода, но если это так,Диспетчер задач также не сможет завершить процесс.

Процесс, который вызывает TerminateProcess (), выполняется под системной учетной записью, поэтому мы не считаем, что это проблема с разрешениями (также, если это была проблема с разрешениями)мы ожидаем, что функция возвратит ACCESS_DENIED).

Процесс, который мы пытаемся убить, выполняется как начальная программа в сеансе RDP.

Кто-нибудь имеет представление о том, что может вызватьэто поведение?Или, может быть, предложить способы устранения неполадок?Мы попробовали Process Monitor и Process Explorer, но ничего не нашли.

...