Как я могу предотвратить процесс, который я порождаю, от порождения дочерних процессов?

Моя программа Windows XP/7 запускает дочерний процесс, используя функцию Windows API CreateProcess() как часть своих операций. Я хочу иметь возможность "песочнице" приложения одним, но только одним конкретным способом. Я не хочу, чтобы дочерний процесс порождал собственные процессы (внуки). Есть ли способ сделать это без необходимости каких-либо перехватов или DLL-инъекций (или исправлений IAT)?

Я видел эту страницу MSDN о безопасности процессов и правах доступа:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx

Я заметил следующий процесс конкретных прав доступа:

PROCESS_CREATE_PROCESS (0x0080) Required to create a process.

Могу ли я запустить дочерний процесс в приостановленном состоянии, удалить это право доступа с помощью операции XOR, обновить права доступа дочернего процесса с помощью SetSecurityDescriptor() и возобновить его, чтобы он не создавал свои собственные дочерние процессы? Или я должен вместо этого применить его к файлу EXE на диске? Будет ли это работать?

Если так, я был бы признателен за хороший пример кода с использованием SetSecurityDescriptor(), который показал бы мне нюансы правильного выполнения этого. Если этот подход не будет работать, любые идеи или советы, которые вы могли бы иметь, будут оценены.

1 ответ

Решение

Вы можете использовать объекты Job для установки ограничений на процессы в работе: JOBOBJECT_BASIC_LIMIT_INFORMATION.ActiveProcessLimit

Другие вопросы по тегам