Как ограничить процесс создания новых процессов? - PullRequest
0 голосов
/ 03 октября 2009

Как ограничить процесс создания новых процессов?

Ответы [ 3 ]

2 голосов
/ 03 октября 2009

Вы можете назначить процесс на объект задания. Используйте SetInformationJobObject с флагом JOB_OBJECT_LIMIT_ACTIVE_PROCESS, чтобы ограничить число процессов в этом объекте задания одним. НЕ устанавливайте JOB_OBJECT_LIMIT_BREAKAWAY_OK (что позволило бы процессу создавать процессы, которые не были частью объекта задания).

Процесс может все еще работать вокруг этого, например, путем запуска нового процесса через планировщик задач или WMI. Если вы пытаетесь создать что-то вроде песочницы для запуска кода, которому вы действительно не доверяете, этого будет недостаточно. Если у вас есть программа, которой вы доверяете, но просто хотите наложить несколько ограничений на то, что она делает, этого должно быть более чем достаточно.

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

2 голосов
/ 03 октября 2009

В Windows нет способа остановить процесс от запуска других процессов. И нет ни одной операционной системы, о которой я знаю.

Системный вызов CreateProcess() доступен для всех процессов, поэтому любой процесс может создать дочерний процесс.

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

Могу я спросить почему вы хотите сделать такую ​​вещь?

1 голос
/ 03 октября 2009

Использование NT Задание объектов

JOBOBJECT_BASIC_LIMIT_INFORMATION может ограничить количество активных процессов или использовать JOBOBJECT_ASSOCIATE_COMPLETION_PORT и завершить новый процесс (если вам нужно только уничтожить подмножество всех новых процессов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...