1

manager.exeで、service.exeによって起動されるworker.exeのCPU使用率を変更しようとしています。Service.exeはシステムアカウントで実行され、manager.exeはログインしたユーザーのアカウントで実行されます。

manager.exeでworker.exeのPIDを使用してOpenProcessを呼び出すと、procHandleに対してNULLが返されます。

HANDLE procHandle = OpenProcess(PROCESS_SET_INFORMATION、0、pid);

GetLastError()を使用すると、アクセス拒否エラーが発生したことがわかります。

これを回避する方法はありますか?どういうわけかworker.exeを変更して、他のプロセスにそれ自体を完全に制御できるようにすることはできますか?

4

1 に答える 1

0

電話する必要はありませんOpenProcess

CreateProcessAsUserサービスは、またはを呼び出したときから、ワーカーへの完全なアクセス許可のハンドルを既に持っている必要がありCreateProcessWithLogonWます。そのハンドルのバージョンをマネージャー プロセスでの使用DuplicateHandleに適したものにするために使用し、サービスがそのハンドルをマネージャーに送信するようにします。サービスはすでにマネージャーへのハンドルを持っていますよね? のためにそれが必要になりDuplicateHandleます。

または、マネージャにサービスにワーカー プロセスの変更を依頼してもらいます。

于 2010-02-19T17:37:53.697 に答える