Как я могу предотвратить процесс, который я порождаю, от порождения дочерних процессов?
Моя программа 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