私の Windows XP/7 プログラムは、操作の一部として Windows API の CreateProcess() 関数を使用して子プロセスを起動します。アプリケーションを 1 つだけ特定の方法で「サンドボックス化」できるようにしたいと考えています。子プロセスに独自のプロセス (孫) を生成させたくありません。フックや 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() を使用して、これを適切に行うニュアンスを示す良いコード サンプルをいただければ幸いです。このアプローチがうまくいかない場合は、アイデアやヒントをいただければ幸いです。