0

Windows サービス (ユーザー = システム) として起動されたプロセス A があります。また、自分のアカウント (グループ管理者) で起動するプロセス B もあります。

私はいくつかの行動を観察しました:

1- プロセス A が最初に Windows サービス (ユーザー システム) として起動されます。その後、プロセス B は実行されません (ユーザーは管理者です): 開始することはできますが、Windows イベントであってもエラーなしですぐに終了します。

2-プロセスBが最初に起動され(ユーザーは管理者)、正常に実行されます。次に、プロセス A が Windows サービス (ユーザー システム) として開始され、すべて正常に動作します。

3- プロセス A が最初に Windows サービスとして起動されます (管理者として実行)。次に、プロセス B が起動され (ユーザーは管理者)、すべて正常に動作します。

4-プロセスAは、最初にWindowsサービス(ユーザーシステム)として起動されます。次に、プロセス B も Windows サービス (ユーザー システム) として起動されます。すべて正常に動作します。

いくつかの権利の構成に問題があるように思えますが、どれを見つけることができません。また、プロセス A とプロセス B はいくつかの DLL を共通して使用しているため、問題が発生している可能性がありますが、どちらが欠陥のある DLL であるかがわかりません。

皆さんの何人かが私がそれを理解するのを手伝ってくれることを願っています! 実行したいユースケースは 1 番です。

フレデリック

4

1 に答える 1

0

問題は、dll の 1 つが共有メモリとミューテックスを使用していることです。プロセス A がスーパー ユーザーとして実行されている場合、共有メモリとミューテックスはスーパー ユーザー権限で作成されます。

より低いユーザー特権で起動されたプロセス B は、共有メモリとミューテックスを初期化または再利用するのに十分な特権を持っていないため、失敗します。

私の場合の解決策: 解決策 1-dll での共有メモリとミューテックスの使用を停止します。解決策 2 - 共有メモリまたはミューテックスを作成/アクセスできない場合でも、劣化モードで続行できるようにします。解決策 3 - 同じユーザーで両方のプロセスを実行します。

私のユースケースに最も適しているため、解決策 2 を使用します。

于 2013-02-01T08:56:58.593 に答える