質問

アプリケーション開発者向けに予約されているWindowsに特定の範囲のイベントIDはありますか?

Windowsイベントログにエラーを書き込む.NETアプリケーションに取り組んでいます。このアプリケーションは実際にサーバーをターゲットにしており、可能な限りロックダウンしたいと思う妄想SYS管理者によってスケジュールされたタスクとして実行されます(削減された特権メンテナンスアカウントで実行することを含む)。アプリは正式にインストールされません。実際、私はこれのためのインストーラーを構築することすらありません。 .exeおよびapp.configファイルを備えたzipファイル。

トリックは次のとおりです。Windowsでは、アプリケーションイベントログにソースを作成するには、管理者の権限が必要です。私はこれを頼りにすることができず、過労したSYS管理者を作成する必要があるので、私はフォールバックとして「アプリケーションエラー」(MS Officeで使用)を使用しています。 (オフィスがサーバーに頻繁にインストールされていないため、より良いフォールバックを選択することは私のTODOリストに載っています)。

問題は、オフィスを装っているだけでなく、イベントを少し目立たせたいということです。このようにして、私のSYS管理者は、イベントビューアーまたは選択したログアグリゲーターのこれらのイベントだけに簡単にフィルタリングできます。私が今知っている最良の解決策はイベントIDを使用することですが、特にターゲットオーディエンスを考慮すると、内部のWindowsイベントと矛盾することが心配です。

私は見ましたが、これに関するドキュメントが見つかりません。だから、私が使用すべき特定の範囲のイベントIDがありますか、私は何でも使用しても大丈夫ですか、それともここで完全に異なるオプションを見る必要がありますか?

役に立ちましたか?

解決

あまり。トップレベルでは、イベントソースがあります。各イベントソースには、独自のイベントカテゴリがあります。各イベントメッセージはイベントソースによって「所有」され、イベントカテゴリの1つに分類されます。他の誰かのイベントソースの下でイベントを記録する場合は、このコンベンションを破り、イベントIDの衝突がある可能性があります。

一方で、 イベントID 構造的にHRESULTSに似ており、設定できる顧客ビットがあります。施設コードフィールドもありますが、Microsoftはサードパーティに1つの施設のみを提供しています(残りは予約されています)。これらのビットを台無しにしたとしても、あなたはまだイベントソースの所有者に翻弄されています。 Microsoftが使用しているイベントソースに何かを書いて、顧客ビットまたは施設コード(たとえば、Officeなどの非ワインドコンポーネントなど)を設定する場合、同じ衝突の危険に戻るでしょう。または、他の開発者があなたがしているのと同じことをすることを決定した場合。本当に最も安全な方法は、独自のイベントソースを定義することです。

他のヒント

これが問題の核心のようです

特にターゲットオーディエンスを考慮して、内部のWindowsイベントと矛盾することが心配です。

イベントIDは特定のイベントソースに対応するため、心配する必要はないと思います。たとえば、MSは時々そうします 同じIDを使用します さまざまなソースがあります。

登録された出版社とイベントIDに関する情報を取得したい場合は、使用できます wevtutil たとえば、これにはパブリッシャーがリストされます。

wevtutil ep

それから、パブリッシャーに使用される特定のイベントIDを取得できます。次のことを使用できます(この例ではイベントログが使用されました)

wevtutil gp Microsoft-Windows-EventLog /ge /gm:true

あなたがPowerShellが得意なら、登録されているすべてのイベントIDを取得するスクリプトを思い付くことができると確信しています

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