私のコードでは、何かがひどくうまくいかない場合、(ReportEvent関数を使用して)イベントログに何かを書き込みます。これらのエントリについては、イベントログエントリ(ReportEvent関数の5番目の引数)でユーザーIDを取得します。
他の多くのエントリ(他のアプリケーションまたはWindows自体から)の場合、ユーザーフィールドは「N/A」として表示されます。
問題は、Windowsがそれ自体でアプリケーションのエントリも追加することです。
Windowsのイベントログエントリにユーザー名またはユーザーSIDが表示されないのはなぜですか?ほとんどの場合「N/A」なのはなぜですか? Windowsで生成されたイベントログエントリでユーザー名またはSIDを使用するようにWindowsに強制する方法はありますか?
ありがとう、パトリック
私の知る限り、ユーザー名でイベントをログに記録するようにWindowsに指示する方法はありません。 Microsoftは、ほとんどのイベントでユーザー名をログに記録することから離れようとしているようです。
Windows 2003までは、セキュリティイベントログのイベントには通常、ユーザー名が関連付けられていましたが、Windows2008ではそうではないようです。
理由は言えません。イベントログエントリは通常、ソース、ID、およびカテゴリによって識別され、ユーザー名は通常、トラブルシューティングの目的ではほとんど価値がありません。ほとんどのイベントでは、ユーザー名はLocalSystemとにかく何かになります。
Windowsは、一部のイベント、特にタスクスケジューラからのイベントのユーザー名を引き続きログに記録します。 Microsoft-Windows-TaskScheduler/Operationalイベントログを見ると、すべてのイベントが、タスクが実行されたユーザーのユーザー名でログに記録されていることがわかります。
アプリケーションに関係するすべてのイベントを表示できるように、ユーザー名に基づいてイベントをフィルタリングしたいと考えています。残念ながらそれは不可能なので、コンテンツを調べて、exeの名前と一致するかどうかを判断する必要があります。