2

Windows サービスでスレッドの優先順位を設定する前に、追加の構成が必要ですか?

私のサービスでは、それぞれがCreateProcess()関数を呼び出して外部アプリケーションを起動するいくつかのスレッドがあります。他の要因に応じて、スレッド (またはプロセス) の優先度をnormalまたはに調整したいと思います。lower

問題は、SetThreadPriority()関数がエラー 6 (無効なハンドル?) で失敗することです。PROCESS_INFORMATION::hThread(もちろんを呼び出した後)から取得したハンドルを渡しているので、ハンドル有効である必要があるCreateProcess()と思います。

関数を使用してプロセスの優先度を設定しようとしましたがSetPriorityClass()、これも失敗します。

サービスはローカル ユーザーとしてログオンします。

4

1 に答える 1

2

適切なアクセス権を持っていない可能性がありますか? SetThreadPriority の MSDNは次のように述べています。

hThread [入力] 優先度の値を設定するスレッドへのハンドル。

ハンドルには、THREAD_SET_INFORMATION または THREAD_SET_LIMITED_INFORMATION アクセス権が必要です。詳細については、スレッドのセキュリティとアクセス権を参照してください。

Windows Server 2003 および Windows XP/2000: ハンドルには THREAD_SET_INFORMATION アクセス権が必要です。

于 2008-10-27T07:28:16.287 に答える