2008-08-30 6 views
1

さまざまなプロセスで使用される特定のリソースのイベントを作成し、これらのイベントに名前でアクセスしたいと考えています。問題は、イベントの名前がそれらを参照するすべてのアプリケーションに知られていなければならないと思われます。Windowsで名前付きイベントを一覧表示することはできますか?

おそらく、システム内の名前イベントのリストを取得する方法はありますか?

私はいくつかの標準的な名前を使用するかもしれないが、将来の拡張性に関しては柔軟性がないと思われます(すべてのアプリケーションは再コンパイルが必要です)。それは、Windows XP以降を必要とすると記載されているので、私は怖い


は、私も、ZwOpenDirectoryObjectを考慮することはできませんので、それは問題外です。しかし、提案をありがとう。

これまでに試したことがないので、私は共有メモリについて少し不安です。私が推測するその地域では読書をするかもしれない。構成ファイルとレジストリは、アクセスの問題によりVistaで失敗する傾向があるため、わずかな問題です。私は少し怖いです、共有メモリにも同じ問題があります。

ProcessExplorerのアイデアは有望です。誰かがプロセスのイベントを一覧表示するために使用できるAPIを知っていますか?そして、それは管理者権限なしでは機能しますか?


ありがとうございます。

実際にはマスタープロセスはありません。これは、異なるプロセスから使用されるドライバーDLLであり、イベントはこれらのプロセスによって使用されるリソースを「ロック」するために使用されます。

Vistaでも十分なアクセス権を持つ中央サービスを設定することを考えています。確かに物事は複雑になるでしょうが、それはセキュリティの問題に直面した唯一のものかもしれません。

+0

「イベント」とはどういう意味ですか?あなたはWin32関数 'CreateEventEx'または何か他のものによって作成されたイベントを参照していますか? – Jeremy

答えて

1

ユーザモードZwOpenDirectoryObjectとカーネルモードZwOpenDirectoryObjectを混在させないでくださいカーネルモードのAPI(http://msdn.microsoft.com/en-us/library/ms800966.aspx)は確かにXPだけで利用可能であるようですが、ユーザモードのバージョンは少なくともNT 4以降利用可能でなければなりません。とにかく、私はZwOpenDirectoryObjectの使用をお勧めしません。

Vistaで設定ファイルとレジストリキーが失敗するのはなぜですか?もちろん、セキュリティ設定を正しく取得する必要がありますが、指定したイベントに対してもセキュリティ設定を行わなければならないため、ここで大きな違いはありません。たぶん、プロセスの性質について詳細を教えてください。プロセスは同じログオンセッション内で実行されるのですか、異なるユーザーとして実行されるのでしょうか?そして、いくつかのマスタープロセス、または最初にイベントを作成する人はいますか?

率直に言えば、私はProcess Explorerのアイデアが非常に優れているとは思えません。ドキュメント化されていないAPIやデバイスドライバを使用しないと、おそらくそれを達成できないかもしれないが、私は、プロセスが別のプロセスのハンドルテーブルでspelunkingして、カーネルオブジェクト。もちろん、同じセキュリティ問題が再び適用されます。

2

いいえ、名前付きイベントを列挙する機能はありません。 ZwOpenDirectoryObjectを使用して、それぞれのオブジェクトマネージャーディレクトリ内のすべてのオブジェクトを列挙し、イベントをフィルタすることができます。しかし、このルーチンは文書化されておらず、正当な理由なく使用されるべきではありません。

別のメカニズムを使用してイベント名を共有してみませんか?設定ファイル、レジストリキー、またはおそらく共有メモリにリストすることができます。

1

ProcessExplorerは、特定のプロセスによって保持されているすべての名前付きイベントを列挙できます。私は現在、どのAPIがリストを取得するために使用されているかを手がかりにしていますが、プロセスリスト全体を見渡すことができます。

関連する問題