Моя программа 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 (), который показал бы мне нюансы правильного выполнения этого. Если этот подход не сработает, любые идеи или советы, которые вы могли бы получить, будут оценены.