web-dev-qa-db-ja.com

ほとんどのイベントログエントリのユーザー名が「N / A」であるのはなぜですか?それを記入する方法は?

私のコードでは、何かがひどくうまくいかない場合、(ReportEvent関数を使用して)イベントログに何かを書き込みます。これらのエントリについては、イベントログエントリ(ReportEvent関数の5番目の引数)でユーザーIDを取得します。

他の多くのエントリ(他のアプリケーションまたはWindows自体から)の場合、ユーザーフィールドは「N/A」として表示されます。

問題は、Windowsがそれ自体でアプリケーションのエントリも追加することです。

  • アプリケーションがMesssageBox(MB_TASKMODALフラグ付き)を表示する場合。イベントログには、ソースが「アプリケーションポップアップ」のエントリが表示されます。
  • アプリケーションがビジーですぐに応答しない場合。イベントログには、ソースが「アプリケーションハング」のエントリが表示されます。

Windowsのイベントログエントリにユーザー名またはユーザーSIDが表示されないのはなぜですか?ほとんどの場合「N/A」なのはなぜですか? Windowsで生成されたイベントログエントリでユーザー名またはSIDを使用するようにWindowsに強制する方法はありますか?

ありがとう、パトリック

2
Patrick

私の知る限り、ユーザー名でイベントをログに記録するようにWindowsに指示する方法はありません。 Microsoftは、ほとんどのイベントでユーザー名をログに記録することから離れようとしているようです。

Windows 2003までは、セキュリティイベントログのイベントには通常、ユーザー名が関連付けられていましたが、Windows2008ではそうではないようです。

理由は言えません。イベントログエントリは通常、ソース、ID、およびカテゴリによって識別され、ユーザー名は通常、トラブルシューティングの目的ではほとんど価値がありません。ほとんどのイベントでは、ユーザー名はLocalSystemとにかく何かになります。

Windowsは、一部のイベント、特にタスクスケジューラからのイベントのユーザー名を引き続きログに記録します。 Microsoft-Windows-TaskScheduler/Operationalイベントログを見ると、すべてのイベントが、タスクが実行されたユーザーのユーザー名でログに記録されていることがわかります。

アプリケーションに関係するすべてのイベントを表示できるように、ユーザー名に基づいてイベントをフィルタリングしたいと考えています。残念ながらそれは不可能なので、コンテンツを調べて、exeの名前と一致するかどうかを判断する必要があります。

1
Lucky Luke