Articles of 事件日志

写入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议。 谢谢。

从Windows审计日志中提取任何机器特定的信息?

这是这个问题的后续。 我遵循了接受的答案,并认为我对结果感到满意,但遇到了障碍。 安装程序 我从监视目录的服务器运行我的C#程序。 任何时候文件被修改,FileSystemWatcher触发一个事件,导致程序检查安全审计日志(已打开,请参阅上一个问题的解决scheme)。 问题 我的问题是,当我在远程用户修改文件后检查安全日志时,他们被logging为匿名用户。 特别是“NT AUTHORITY \ SYSTEM”。 有没有办法从这些安全日志中提取独特的信息,这将有助于我区分修改文件的用户? Deets 我使用EventLog来读取这样的安全日志: EventLog log = new EventLog("security"); EventLogEntryCollection col = log.Entries; //… string username = entry.UserName;

事件日志侦听器 – 应用程序和服务

有什么方法可以在生成(在C#中)时观察“应用程序和服务”的事件吗? 我发现我无法使用WMI。 任何其他的想法?

GetNumberOfEventLogRecords返回的事件日志数量不正确

我有这个C ++代码来读取事件日志logging DWORD GetLogRecords(LPCWSTR wsLogFile) { HANDLE hEvt = OpenEventLog(NULL, wsLogFile); if (hEvt==NULL) return 0; DWORD dwTotalRecords; BOOL res = GetNumberOfEventLogRecords(hEvt, &dwTotalRecords); CloseEventLog(hEvt); return (res != 0) ? dwTotalRecords : 0; } 结果 atlTraceGeneral – C:\Windows\system32\winevt\logs\ACEEventLog.evtx – 23499 Total Records atlTraceGeneral – C:\Windows\system32\winevt\logs\Application.evtx – 23499 Total Records atlTraceGeneral – C:\Windows\system32\winevt\logs\ConnectionInfo.evtx – 23499 Total Records atlTraceGeneral […]