2010-11-30 2 views
0

を考えてみましょう:Mutex Class(MSDN)サービスからセッション・ミューテックスを作成しますか?

(。そして、SysinternalsのからWinObjを使用しては)

は、どのように私はそれを作成以外のセッションのミューテックスを作成するのですか?

I.e.セッション0のシステムサービスから、セッション1にミューテックスを作成しますか?

私は

\セッションを使用してミューテックスを作成しようとしている\ 1 \ BaseNamedObjects \がmyName

しかし、それは失敗します。

WinObjに表示されているWindowsオブジェクト名前空間のルートに直接書き込むことはできますか?

+0

セッションオブジェクトは、少なくともユーザーモードから、そのセッションで実行されているプロセスによってのみ作成できます。カーネルドライバでこれを行うことができるかどうかはわかりません。しかし、なぜあなたはこれをしたいですか?あなた自身のセッション以外でセッションを混乱させるのは良い行動ではありません。 – Luke

+0

システムサービスから、ユーザーのためにプログラムでセッションに変異体をアクセスして作成する必要があります。なぜこのことが可能ではないのか分かりません。実際に私はCreateProcessAsUserを使用して、ユーザーのセッションにプロセスを注入して、私のサービスに代わってこれらのタスクを実行して、私に同じ効果を与えることができます。可能であれば、サービスからオブジェクトを直接操作する方が好きです。 – Peter350

答えて

1

あなたのミューテックス名に "Global \"プレフィックスを使用してみてください。ターミナルサービスを実行しているサーバーでは、名前付きシステムミューテックスは2つのレベルの可視性を持つことができます。その名前が接頭辞 "Global \"で始まる場合、mutexはすべてのターミナルサーバーセッションで表示されます。

また、別のアプローチを試すこともできます。相互排除の代わりに、CreateFileMappingOpenFileMappingのメソッドに、 "Global \"という接頭辞を付けてください。

関連する問題