Windows で名前付きイベントを一覧表示することはできますか?

StackOverflow https://stackoverflow.com/questions/35748

  •  09-06-2019
  •  | 
  •  

質問

さまざまなプロセスで使用される特定のリソースのイベントを作成し、名前でこれらのイベントにアクセスしたいと考えています。問題は、イベントを参照するすべてのアプリケーションがイベントの名前を認識している必要があることのようです。

システム内の名前イベントのリストを取得する方法はあるでしょうか?

いくつかの標準名を使用する可能性があることは承知していますが、将来の拡張性を考えるとかなり柔軟性が低いように思えます (すべてのアプリケーションで再コンパイルが必要になります)。


残念ながら、ZwOpenDirectoryObject は Windows XP 以降が必要と記載されているため、問題外です。でも、提案してくれてありがとう。

共有メモリについては、これまで試したことがないので少し不安です。その分野については少し読んでみるといいかもしれません。構成ファイルとレジストリは、Vista ではアクセスの問題により失敗する傾向があるため、少し問題になります。共有メモリでも同じ問題が発生するのではないかと少し心配です。

ProcessExplorer のアイデアは有望に思えます。プロセスのイベントをリストするために使用できる API を知っている人はいますか?また、管理者権限がなくても機能しますか?


ご説明いただきありがとうございます。

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

Vista でも十分なアクセス権を持つ中央サービスをセットアップすることを考えています。確かに状況は複雑になりますが、セキュリティの問題に直面する唯一のことになるかもしれません。

役に立ちましたか?

解決

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

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

率直に言って、私は Process Explorer のアイデアはあまり良いものではないと思う傾向があります。文書化されていない API やデバイス ドライバーを使用せずにこれを達成することはおそらく不可能であるという事実にもかかわらず、プロセスが名前を見つけるためだけに別のプロセスのハンドル テーブルを探索する必要はないと思います。カーネルオブジェクト。そしてもちろん、同じセキュリティ問題が再び適用されます。

他のヒント

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

イベント名を共有するために別のメカニズムを使用してみてはいかがでしょうか?それらを構成ファイル、レジストリ キー、または場合によっては共有メモリにリストすることもできます。

プロセスエクスプローラー 特定のプロセスによって保持されるすべての名前付きイベントを列挙できます。プロセス リスト全体を調べて同様のことを行うこともできますが、リストを取得するためにどの API が使用されているかについてはわかりました...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top