将事件日志添加到注册表

本文关键字:注册表 添加 日志 事件 | 更新日期: 2023-09-27 18:25:34

我正试图使用访问服务器上的"ForwardedEvents"事件日志

el = new EventLog("ForwardedEvents", serverName);

这不起作用。

我认为它不起作用,因为日志不包含在Eventlog期望找到它的注册表中(HKLM/System/CurrentControlSet/Services/Eventlog/..)。

如何将日志添加到注册表中以便找到它,或者是否有其他方法可以访问未在该位置指定的日志?

将事件日志添加到注册表

通过在以下位置为日志创建新的注册表项来解决此问题:(HKEY_LOCAL_MACHINE''SYSTEM''CurrentControlSet''services''eventlog''LOGNAME)。

执行此操作的人..(在windows server 2008 R2上)。。

1) 右键单击父文件夹(事件日志)->新建->密钥

2) 将密钥命名为(C:''Windows''System32''winevt''Logs''LOGNAME)中的evtx文件

3) 在注册表资源管理器的右侧窗格中,右键单击->新建->可扩展字符串值

4) 将新创建的REG_EXPAND_SZ命名为"文件"

5) 右键单击名称"文件"

6) 修改

7) 在"值数据"框中,添加evtx文件的路径,如

(%SystemRoot%''System32''winevt''Logs''ForwardedEvents.evtx)

这与这里提供的其他注册表解决方案很接近,但我在Windows7上就是这样做的,并将写入应用程序日志,而不是转发事件日志:

  • Windows徽标>在搜索中键入regedit,然后按输入

  • 展开HKEY_LOCAL_MACHINE'SYSTEM'CurrentControlSet'services'eventlog

  • 找到Application密钥并为您的应用程序创建一个新密钥:MyApp

  • MyApp中,右键单击空白区域中的右侧窗口,然后选择新建>可扩展字符串值。这将创建一个REG_EXPAND_SZ条目。将其命名为EventMessageFile

  • 双击新条目以设置值。对于该值,请输入:C:'Windows'Microsoft.NET'Framework64'v4.0.30319'EventLogMessages.dll选择确定

  • (Default)字符串值与其(value not set)值单独保留。

  • ControlSet001ControlSet002替换CurrentControlSet,再重复两次。

如果您需要将应用程序移动到另一台计算机,您可以右键单击该键并选择Export。将文件另存为.reg文件,然后将其复制到下一台计算机。在那里,您可以双击以运行它(以管理员身份登录时)。这样,您就不必手动重新创建它,对于其他应用程序,您实际上可以在记事本中编辑.reg文件,只需更改应用程序的名称,保存它(请确保将格式更改为"所有文件",这样它会在末尾保留.reg,而不是将其保存为.txt文件),然后您可以双击它来运行并插入新应用程序的EventLog键。

如果您仍然想以编程的方式完成这项工作,而不是通过注册表手动创建日志,那么有一种方法。您需要先检查EventSource是否存在,如果不存在,则需要创建它。在尝试使用该源创建EventLog实例之前,必须先执行此操作。只需注意创建和使用之间的延迟,因此请确保处理此问题(请参阅http://msdn.microsoft.com/en-us/library/2awhba7a(v=vs.110).aspx获取更多信息)。

// Create the source, if it does not already exist. 
if(!EventLog.SourceExists("MySource"))
{
    //An event log source should not be created and immediately used. 
    //There is a latency time to enable the source, it should be created 
    //prior to executing the application that uses the source. 
    //Execute this sample a second time to use the new source.
    EventLog.CreateEventSource("MySource", "MyNewLog");
    Console.WriteLine("CreatedEventSource");
    Console.WriteLine("Exiting, execute the application a second time to use the source.");
    // The source is created.  Exit the application to allow it to be registered. 
    return;
}
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "MySource";
// Write an informational entry to the event log.    
myLog.WriteEntry("Writing to event log.");