1

JobObject からプロセスを切り離す方法はありますか? 私の問題は、cmd.exe のような RunAs で新しいプロセスを作成すると、自動的に JobObject に割り当てられることです。また、この cmd からアプリケーションを実行したい場合は、このジョブ オブジェクトにも割り当てられます。問題はここから始まります。私のアプリケーションは新しいジョブ オブジェクトを作成し、新しいプロセスを作成し、それを新しいジョブ オブジェクトに割り当てますが、runas で開始された最初の cmd が既にジョブ オブジェクトに割り当てられているため、関連付けることができません。そのため、作成した新しいプロセスもこのジョブ オブジェクトに割り当てられます。

だから私の質問は、自動的に作成されるジョブオブジェクトから最初の cmd をどのように切り離すことができますか、またはこの問題をどのように解決できますか?

4

1 に答える 1

1

runas を使用する代わりに、標準ユーザーとして親アプリケーションを実行し、CreateProcessWithLogonW昇格に使用することを検討してください。

psexecまたは、リモートでコマンドを実行するように設計されていますが、ローカル コンピューター上の現在のコンテキストをエスケープするのに役立つことが多い which を使用することもできます。runas の代わりに psexec を使用することもできます。

psexec -i \\%COMPUTERNAME% -u adminuser cmd.exe

(パスワードの入力を求められます) または runas を使用してから

psexec -s -i \\%COMPUTERNAME% parent.exe

parent.exeローカル システム コンテキストで実行します。新しいプロセスはシステム サービスから起動されるため、これにより既存のジョブ オブジェクトがエスケープされます。

複数のターミナル サーバー セッションをより広範囲に使用するため、Vista 以降ではフラグを使用psexecするのが難しいことに注意してください。-iそのシナリオでは、runas に固執するほうがよいでしょう。幸いなことに、あなたの問題は XP にのみ適用されます。:-)

于 2012-11-21T03:35:09.940 に答える