0

ソースコードを受け取り、サーバー上でコンパイルし、実行し、データベースから入力を転送し、出力をキャッチし、データベース内の出力と比較して正しいかどうかを確認するテストソフトウェアを作成しています。問題は、ソース コードが何でもかまいません (c/c++ で記述され、Visual Studio cl でコンパイルされている) ため、何らかの形で悪意のあるユーザーを防止する必要があることです。それらのプロセスが一定時間以上実行されたり、許可されているよりも多くのメモリを使用したりすると、それらのプロセスを自動的に強制終了します。

問題は、これらのプロセスに標準の入出力ストリームからの書き込みと読み取りのみを許可し、Windows でのその他のアクセス権を拒否することだけを許可できるかということです。

私の英語を許してください。

前もって感謝します。

4

1 に答える 1

1

おそらく、ジョブ オブジェクトが役に立ちます ( http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspxを参照)。この非常に強力な機能はあまり知られていません。

ジョブの操作は非常に簡単です。CreateJobObject時間、メモリ、いくつかの制限など、さまざまな制限を考慮してジョブを作成し、設定できます。次に、中断フラグ付きのプロセスを作成し、プロセスをジョブに割り当てて、プロセスを再開できます。次に、作成されたプロセスと、プロセスが作成できる子プロセスのすべてのツリーの下で完全な制御を受け取ります。ジョブ機能は Windows 2000 から存在します。

もう 1 つの最新の方法は、ユーザー インターフェイス特権の分離 (UIPI) ( http://msdn.microsoft.com/en-us/library/bb625963.aspxを参照)、または Vista によって導入された低整合性プロセスの使用方法です。低整合性のプロセスを作成する方法については、http://msdn.microsoft.com/en-us/library/Bb250462#dse_stlipを参照してください。

于 2010-06-11T12:53:22.103 に答える