3

我有一小段代码可以从 eventvwr 读取“系统”事件

        EventLog eventLog = new EventLog("System");

        foreach (EventLogEntry log in eventLog.Entries)
        {
            Console.WriteLine("{0}\n", log.Message);
        }

这很好用,但对于少数事件日志,我会收到类似的消息

"The description for Event ID '109' in Source 'Microsoft-Windows-Kernel-Power' cannot be found.  The local computer may not have the necessary registry information or message DLL files to display the message, or you may not have permission to access them.  The following information is part of the event:'6', '0', '5'"

当我打开 eventvwr 时,我可以看到那里的描述。

The kernel power manager has initiated a shutdown transition.
Shutdown Reason: Kernel API

我以管理员身份运行此代码。

谁能帮我弄清楚为什么我会收到这样的消息进行描述。提前致谢

有类似的帖子,但没有人提出这个问题。例如这个

“找不到源 Y 中事件 ID X 的描述。”

4

2 回答 2

1

作为管理员,您要么无权访问消息文件,要么它的位置不在您当前的路径上。

事件日志消息文件的位置在注册表中定义,即如果您查看

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\System\Microsoft-Windows-Kernel-Power

你应该找到一个EventMessageFile具有数据%systemroot%\system32\microsoft-windows-kernel-power-events.dll或类似的值 - 这是来自我的机器。

检查这是否在您的路径上以及您作为管理员拥有的权限。

于 2018-06-19T08:01:58.960 回答
0

C# 的主题,但如果您在 PowerShell 中遇到此错误,只需切换到使用Get-WinEvent而不是 Get-EventLog,一切都会好起来的。


资料来源:Boe Prox 在这里的回复:

改用 Get-WinEvent [...] Get-EventLog 更适合较旧的操作系统。

于 2020-11-27T08:56:39.083 回答