当我将日志写入Windows事件日志时,出现了下面的事件,这条消息的根本原因是什么,我该如何修复它?非常感谢。
源RRWS中事件ID 51001的说明找不到。引发此事件的组件未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复该组件。
如果事件始于另一台计算机,则必须使用事件保存显示信息。
以下信息包含在事件中:
测试日志消息
消息资源存在,但在字符串/消息表中找不到该消息
当我将日志写入Windows事件日志时,出现了下面的事件,这条消息的根本原因是什么,我该如何修复它?非常感谢。
源RRWS中事件ID 51001的说明找不到。引发此事件的组件未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复该组件。
如果事件始于另一台计算机,则必须使用事件保存显示信息。
以下信息包含在事件中:
测试日志消息
消息资源存在,但在字符串/消息表中找不到该消息
在使用“EventCreate”命令从命令行下创建应用程序日志下的事件源后,我遇到了这个错误。
该命令会在以下位置下创建一个新键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
如果您查看已创建的键(例如SourceTest),将会有一个名为EventMessageFile
的字符串值,对于我而言,该值设置为%SystemRoot%\System32\EventCreate.exe
。
将其更改为c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
。
删除CustomSource
和TypesSupported
值。
这样就可以停止“The description for Event ID....”消息。
如何实现一个真实世界的解决方案呢?
如果你只需要一种"快速简单"的方式来将一些东西写入事件日志而不需要注册"自定义来源"(需要管理员权限),或者提供"消息文件"(需要耗费时间和精力),那么只需这样做:
EventLog.WriteEntry(
".NET Runtime", //magic
"Your error message goes here!!",
EventLogEntryType.Warning,
1000); //magic
这样做,您就可以写入一个现有的"应用程序"日志,而不会出现烦人的"The description for Event ID 0 cannot be found"。
如果您想要解释"magic"部分,我在这里写了一篇博客。
.NET Runtime
的魔法。诀窍在于不指定类别参数。请看:https://dev59.com/CnA75IYBdhLWcg3wOWRd#58132584 - Zverev Evgeniy重新启动你的系统!
我的一个朋友也遇到了完全相同的问题。他尝试了所有描述的选项,但似乎没有什么作用。经过多次研究,包括微软的描述, 他得出结论:重新启动系统就可以解决问题!
似乎在某些情况下,操作系统不会刷新已注册事件源的列表。只有在重新启动后,您才能确保事件源已正确注册。
You need to create an event source and a message file for it. Code looks something like this:
var data = new EventSourceCreationData("yourApp", "Application");
data.MessageResourceFile = pathToYourMessageFile;
EventLog.CreateEventSource(data);
New-EventLog -LogName MyApplicationLog `
-Source MySource `
-MessageResourceFile C:\windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
您需要安装messages.dll文件来避免出现您目前遇到的问题。
#define
中被“混淆”)将severity设置为error(如事件标识符中所述的两个高位比特)。因为Event Viewer显示事件标识符(低16位),所以无法匹配...如果你的日志记录不是以“消息资源存在,但在字符串/消息表中找不到消息”结尾(与原问题相反):
如果你需要添加/编辑注册表信息,请记住:
EventLog
服务(或者按@BrunoBieri的建议重新启动系统)。如果你不想创建自定义DLL资源,请注意常见的事件消息文件有一些注意事项:
EventLogMessages.dll
(如@Matt提示)最多可以达到0xFFFF
EventCreate.exe
仅可达到0x3E9
%1
ReportEvent
的字符串仍然可以通过查看事件详细信息(选择所需事件,转到详细信息选项卡并展开EventData)来检查如果你的记录事件中仍然出现“找不到”(原问题):
通常这是由一个写入事件日志的程序被卸载或移动引起的。