C# 事件日志-EntryWrittenEventTargets返回事件ID';s

C# 事件日志-EntryWrittenEventTargets返回事件ID';s,c#,C#,我正在开发一个简单的C#Windows服务,该服务通过“EntryWrittenEventHandler”处理程序监听事件日志,监视登录注销事件,然后将它们写入数据库 该服务按预期工作了几天,然后突然我没有看到任何关于登录和注销事件的记录。我看到每次写入新的安全事件日志时都会触发EntryWrittenEventHandler处理程序…但是在EntryWrittenEventTargets类中…我看到每个条目都报告为“事件ID 0”,并且此消息: " 信息 找不到源“”中事件ID“0”的说明。本

我正在开发一个简单的C#Windows服务,该服务通过“EntryWrittenEventHandler”处理程序监听事件日志,监视登录注销事件,然后将它们写入数据库

该服务按预期工作了几天,然后突然我没有看到任何关于登录和注销事件的记录。我看到每次写入新的安全事件日志时都会触发EntryWrittenEventHandler处理程序…但是在EntryWrittenEventTargets类中…我看到每个条目都报告为“事件ID 0”,并且此消息:

"

信息 找不到源“”中事件ID“0”的说明。本地计算机可能没有显示消息所需的注册表信息或消息DLL文件,或者您可能没有访问它们的权限。以下信息是事件的一部分: 一串 消息 找不到源“”中事件ID“0”的说明。本地计算机可能没有显示消息所需的注册表信息或消息DLL文件,或者您可能没有访问它们的权限。以下信息是事件的一部分: 一串 +所有者 {System.Diagnostics.EventLoginInternal} System.Diagnostics.EventLoginInternal 替换字符串 {string[0]}string[] 来源 ”“绳子 +时间生成 {12/31/1969 7:00:00 PM} 系统日期时间 +时间记录 {12/31/1969 7:00:00 PM} 系统日期时间 用户名 空字符串“

不知道发生了什么事。打开相关服务器上的事件日志…我可以看到预期的所有条目。日期也是1969年……这也很奇怪

以下是我目前正在进行的工作的代码:

    public Audit()
    {
        CanHandleSessionChangeEvent = true;

        //Start the EventLog Watcher
        startEventLogWatch();
    }

    private void startEventLogWatch()
    {
        EventLog eLog = new EventLog("Security");
        eLog.EntryWritten += new EntryWrittenEventHandler(EventLog_OnEntryWritten);
        eLog.EnableRaisingEvents = true;
    }

    private void EventLog_OnEntryWritten(object source, EntryWrittenEventArgs e)
    {
        try
        {
            if (e.Entry.InstanceId.ToString() == "4624")
            {
                EventAudit eventAuditEntry = new EventAudit();
                eventAuditEntry = LogonEvent(e);

                if (eventAuditEntry.ADUserName != null)
                {
                    WriteDBEntry(eventAuditEntry);
                }
            }
            else if (e.Entry.InstanceId.ToString() == "4647")
            {
                EventAudit eventAuditEntry = new EventAudit();
                eventAuditEntry = LogoffEvent(e);

                if (eventAuditEntry.ADUserName != null)
                {
                    WriteDBEntry(eventAuditEntry);
                }
            }          
        }
        catch (Exception ex)
        {
            eventLog1.WriteEntry("A general error has occured. The error message is as follows: " + ex.Message.ToString(), EventLogEntryType.Error, 2001);
        }
    }

我今天在一台工作的服务器和一台不工作的服务器上调试此服务时注意到一件事。在服务按预期工作的工作服务器上…我可以看到它在服务不工作的服务器上加载两个消息库:wevtapi.dll和adtschema.dll,并生成上述结果…它只加载wevtapi.dll消息库。进行一些快速搜索…听起来adtschema.dll丢失可能是罪魁祸首。但不确定是什么原因导致服务停止加载adtschema.dll库。