В моем коде, если что-то ужасно пойдет не так, я что-то записываю в журнал событий (с помощью функции ReportEvent). Для этих записей я получаю идентификатор пользователя в записи журнала событий (5-й аргумент функций ReportEvent).
Для множества других записей (из других приложений или из самой Windows) пользовательское поле отображается как «N / A».
Проблема в том, что Windows сама добавляет записи для моего приложения, особенно:
Почему Windows не показывает имя пользователя или идентификатор безопасности пользователя в записях журнала событий? Почему в большинстве случаев это "Н / Д"? Есть ли способ заставить Windows использовать имя пользователя или SID в записях журнала событий, созданных Windows?
Спасибо, Патрик
Насколько мне известно, нет способа указать окнам регистрировать события с именем пользователя. Похоже, что Microsoft отказывается от регистрации имени пользователя для большинства событий.
До Windows 2003 с событиями в журнале событий безопасности обычно ассоциировалось имя пользователя, но, похоже, это не относится к Windows 2008.
Я не могу сказать, почему это так. Записи журнала событий обычно идентифицируются по источнику, идентификатору и категории, а имя пользователя обычно не имеет большого значения для целей устранения неполадок. Для большинства событий имя пользователя будет просто чем-то LocalSystem в любом случае.
Windows по-прежнему регистрирует имя пользователя для некоторых событий, особенно событий из Планировщика заданий. Если вы посмотрите журнал событий Microsoft-Windows-TaskScheduler / Operational, вы увидите, что все события регистрируются под именем пользователя, под которым выполнялись задачи.
Я полагаю, что вы, вероятно, захотите отфильтровать события на основе имени пользователя, чтобы вы могли видеть все события, которые имеют какое-либо отношение к вашему приложению. К сожалению, это невозможно, поэтому вам нужно будет просмотреть содержимое, чтобы определить, соответствует ли оно имени вашего исполняемого файла.