我正在从运行在Windows 7上的Windows窗体应用程序中写入事件日志,并在事件日志中获取此消息
无法找到源应用程序中事件ID X的说明。引发此事件的组件没有安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复组件。 如果事件起源于另一台计算机,则显示信息必须与事件一起保存。 这次活动包括下列资料: 异常细节 存在消息资源,但在字符串/消息表中找不到消息。
我的日志代码是:
public void Log(Exception exc)
{
EventLog.WriteEntry(
"Application",
exc.ToString(),
EventLogEntryType.Error,
100);
}我在Windows窗体上的日志通常是到DB上的,但在本例中决定使用事件日志。我通常在ASP.NET应用程序中使用事件日志,但是这些日志在本地XP Pro上,Windows 2003在web框上。
这是Windows 7的东西还是Windows窗体的东西,我应该怎么做才能解决这个问题?谢谢。
发布于 2010-04-03 01:23:53
具体而言,请参见http://support.microsoft.com/kb/307024,不要忘记创建事件源。
发布于 2010-04-03 01:33:57
此重载中的第一个参数是“在指定计算机上注册应用程序的源”。如果此源是“应用程序”,则为“记录在这里”,您将得到此行为。(您是否错误地认为第一个参数引用了Windows日志: Application、Security等?)
要注册源,请执行以下操作:
public void Log(Exception exc){
if(!EventLog.SourceExists("MySource"))
{
EventLog.CreateEventSource("MySource", "MyNewLog");
return ;
}
EventLog.WriteEntry(
"MySource",
exc.ToString(),
EventLogEntryType.Error,
100); } 发布于 2012-05-03 09:34:28
这个解决方案是对我有效的:
在windows 7或Win 2008 R2的注册表中,该键下有一个键R2是该事件日志的所有注册有效源。
当您尝试用非有效的源(不是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\CustomEventLog)下的键)写入事件日志时,它会枚举其他事件日志键,以查看那里是否存在源。
我在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\CustomEventLog键下添加了所有丢失的源。只需在此键下创建现有密钥的副本,并将其重命名为EventSource。
https://stackoverflow.com/questions/2569913
复制相似问题