Articles of 事件日志

阅读事件日志从最新到最旧

我已经写了一个简短的程序来build立使用在启动和closures时发布的事件日志消息的远程PC的正常运行时间。 目前的逻辑是: foreach (eventlogentry) { if (entryTime > OldestTime) { if (entry = Startup) { addOnTime(entry.Time); } if (entry = Shutdown) { addOffTime(entry.Time); } } } “OldestTime”定义了在多长时间后向后扫描…. 我想知道是否有任何方法可以轻易地修改我的程序,从最新到最旧的事件读取事件? 它正在读取远程事件日志,并且需要一段时间才能运行此function,因为它从最后开始并向前读取。 我知道这一点,因为我添加了一个“其他”块到第一个“如果”突破foreach块,如果条目不是在我们正在寻找的时间范围内,程序停止在它读取的第一个事件。

C#事件日志不可访问的日志

下面是运行下面的代码时遇到的exception: 源未find,但部分或全部事件日志无法search。 无法访问的日志:安全。 代码是 if (!EventLog.SourceExists(this.EventLogSource)) exception的内容对我来说是有意义的,这就是为什么不这样做。 此行作为控制台应用程序(暂时)在Visual Studio 2010,.NET 4中运行。 我已经在不同的环境中运行,但我不希望我远程桌面打破这种方法。 我已经尝试更改HKML\CCS\Services\eventlog权限 – 无效,以及C:\Windows\System32\Winevt\Logs\Security.evtx权限。 再次,无济于事。 我的问题如下: 为什么没有覆盖忽略安全日志, 我怎样才能解决这个问题(编程) 这是因为我是远程办公桌。 任何build议将是伟大的。

应用程序错误:故障地址0x00012afb(专家)

我需要一些“光”来获得解决scheme。 可能有很多事情会导致这个问题,但也许有人可以帮助我。 场景:运行24/7全天候运行PostgreSQL数据库和其他服务器应用程序的Windows服务器(用于处理数据库上的任务等)。 有不同的服务器场景(〜30),不同的硬件和Windows版本(XP SP3 / WinServer等…所有基于NT)。 所有的应用程序都是用Delphi7编写的,并链接到DLL(也在D7中)。 经过几天(有时一周,有时几个月),Windows开始变得奇怪,就像不打开开始菜单一样,在对话框中缺less一些button。 不久,一些应用程序不能打开,在eventviewer上引发一个事件: Faulting application x, version y, faulting module kernel32.dll, version 5.1.2600.5781, fault address 0x00012afb 同时,其他应用程序打开罚款,如记事本,iexplore等…但我的一些应用程序不,只有事件日志上面描述。 但是,如果我们不重新启动系统,在几天内甚至cmd.exe停止打开,(和所有其他应用程序)在eventlog上具有相同的错误。 我试图find“什么”可以导致这个,但没有成功。 所以,任何build议都会受到欢迎。 提前致谢。

写入Windows应用程序事件日志,无需注册事件源

有没有办法写这个事件日志: 或者至less,一些其他的Windows默认日志, 我不需要注册一个事件源 ?

在事件日志中订阅非系统(自定义)事件

无论何时将新的日志条目添加到Windows事件查看器中的特定事件日志文件,我都想要引发事件。 我正在尝试做类似于这里提到的东西。 http://msdn.microsoft.com/en-us/library/bb671202.aspx 这是我的代码: static void Main() { EventLogWatcher watcher = null; try { EventLogQuery eventQuery = new EventLogQuery("C:\\Windows\\System32\\winevt\\Logs\\Admin.evtx", PathType.FilePath); EventLogReader logReader = new EventLogReader(eventQuery); DisplayEventAndLogInformation(logReader);// this successfully opens the log and shows all logged events. watcher = new EventLogWatcher(eventQuery); watcher.EventRecordWritten += new EventHandler<EventRecordWrittenEventArgs>(SomeEvent); watcher.Enabled = true; // here i get an unhandled exception which […]

提高阅读事件日志的性能

我正在查询不同的域控制器的事件日志,我必须经过一段时间后继续查询。 以下是我用来查询它的代码。 public static void FindAllLog(string machineName) { //EventLog log = new EventLog("", ""); //log. EventLog[] remoteEventLogs; // Gets logs on the local computer, gives remote computer name to get the logs on the remote computer. remoteEventLogs = EventLog.GetEventLogs(machineName); Console.WriteLine("Number of logs on computer: " + remoteEventLogs.Length); for (int i = 0; i < remoteEventLogs.Length; […]

将事件日志组织到文件夹中

我想创build多个服务,我希望他们在我指定的同一个目录/文件夹下的日志条目中logging每一个,所以当我打开Windows事件查看器时,我可以看到它们全部放在一个文件夹中。 例如,service1将login到service1_log中,service2将login到service2_log中,并且service1_log和service2_log将驻留在名为Myservices的一个文件夹中。 我还没有发现任何Windows事件日志API或任何其他API将适合这个问题..我可以看到在Windows事件查看器有文件夹,但我只能创build日志到日志层次结构的根目录。 在此先感谢托马斯

使用XPath开始 – 带或包含function来searchWindows事件日志

通过在Windows事件查看器中手动编辑XMLfilter查询,我可以find数据完全匹配string的事件: <QueryList> <Query Id="0" Path="Application"> <Select Path="Application">*[EventData[Data and (Data="Session end: imzcjflrrsq1sfdk3okc4jpf")]]</Select> </Query> </QueryList> 现在,我想做一个部分匹配: <QueryList> <Query Id="0" Path="Application"> <Select Path="Application">*[EventData[Data and (Data[starts-with(.,"Session")])]]</Select> </Query> </QueryList> 事件日志给我的错误: 指定的查询无效 我的语法错了吗?

读取包含复杂数据的Windows事件负载

在我以前的问题,我发布了我试图序列化的XML。 这是另一个XML示例: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="XXXXXXXXXX" Guid="{YYYYYYYY}" /> <EventID>XYZ</EventID> <Version>0</Version> <Level>L</Level> <Task>A</Task> <Opcode>0</Opcode> <Keywords>0x000xyzh</Keywords> <TimeCreated SystemTime="2012-06-28T15:44:04.997837000Z" /> <EventRecordID>153</EventRecordID> <Correlation ActivityID="{DDDDDDDDD}" /> <Execution ProcessID="199999" ThreadID="90990" /> <Channel>Microsoft-Windows-ABCDEFG/Admin</Channel> <Computer>myPC</Computer> <Security UserID="ABCABC" /> </System> <EventData> <Data Name="name1">data1</Data> <Data Name="name2">data2</Data> <Data Name="name3">data3</Data> <ComplexData Name="XYZXYZ">0C004300310022002D004400460053005400450053002200310003004E0053003200230041002D00570041002D00320045004400000047006C002900620061006C0048006900670068005000720069006F007200240074006600120044006100730087000000000000000000000000000000</ComplexData> </EventData> <RenderingInfo Culture="en-US"> <Message>some message </Message> <Level>Information</Level> <Task>XYZ</Task> <Opcode>Info</Opcode> <Channel /> <Provider /> <Keywords> […]

哪种方法更好地阅读C#中的Windows事件日志? WMI或EventLog

我需要编写一个应用程序来抓取系统/应用程序的事件日志。 另一个要求是,我需要每隔一分钟阅读一次事件日志以获取自上次阅读以来的新事件日志。 目前我正在考虑使用C#来实现而不是C ++。 有了这些,我阅读了几个网页,如果我理解正确,我可以使用WMI或EventLog类来读取事件日志。 在我看来,当使用EventLog类添加新的事件日志时,我可以得到通知,但我不确定是否比使用WMI好。 如果我的理解是正确的,我想知道我应该采取哪种方式? 请给我一些build议。 谢谢。