Я знаю, что может быть несколько причин, но недавно я сталкивался с этим в сценариях, которые в прошлом работали нормально.
Произошло недавнее изменение, после которого повторное использование объекта задания после вызова метода terminate заставит AssignProcessToJobObject вернуть ERROR_ACCESS_DENIED.
Некоторые возможные решения:
Не перерабатывать объекты заданий.Создайте новый объект после вызова TerminateJobObject для одного.
Если возможно, используйте порты завершения объекта задания ( пример ).