以下是ActiveDirectory生成的日志事件。我有一个应用程序读取这些日志并处理它们。我想创建一个测试应用程序,它将模拟活动目录事件并将类似的日志写入Windows事件日志。
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="SIMULATOR" />
<EventID Qualifiers="0">4769</EventID>
<Level>0</Level>
<Task>0</Task>
<Keywords>0xa0000000000000</Keywords>
<TimeCreated SystemTime="2014-02-03T10:52:20.000000000Z" />
<EventRecordID>35215</EventRecordID>
<Channel>Application</Channel>
<Computer>dev.local</Computer>
<Security />
</System>
<EventData>
<Data Name="TargetUserName">WIN2K8R2-PCX$</Data>
<Data Name="TargetDomainName">dev.local</Data>
<Data Name="TargetSid">S-1-5-21-527455857-2257904818-3601372424-1001</Data>
<Data Name="ServiceName">Administrator</Data>
<Data Name="ServiceSid">S-1-5-21-527455857-2257904818-3601372424-502</Data>
<Data Name="TicketOptions">0x40810010</Data>
<Data Name="Status">0x0</Data>
<Data Name="TicketEncryptionType">0x12</Data>
<Data Name="PreAuthType">2</Data>
<Data Name="IpAddress">84.1.24.45</Data>
<Data Name="IpPort">0</Data>
<Data Name="CertIssuerName" />
<Data Name="CertSerialNumber" />
<Data Name="CertThumbprint" />
</EventData>
请注意,EventData元素中有多个数据元素!
如果我使用以下内容,我会获得多个数据元素但是如何指定每个数据元素的Name属性?
string [] eventLog = new string[] {"A", "S", "D"};
EventLog log = new EventLog {Source = "source"};
log.WriteEvent(eventInstance, eventLog);
在this文章中,我发现我可以使用EventDescriptor / EventProvider来使用ActiveDirectory注册的清单。但这不会在事件日志中写任何内容。
我按照here给出的步骤找到了活动目录guid。在我的系统上,guids如下
Active Directory Domain Services: SAM {8E598056-8993-11D2-819E-0000F875A064}
Active Directory: Kerberos Client {BBA3ADD2-C229-4CDB-AE2B-57EB6966B0C4}
Active Directory: NetLogon {F33959B4-DBEC-11D2-895B-00C04F79AB69}
答案 0 :(得分:0)
从我阅读的方式来看,你需要:
.cs
和.rc
文件。.rc
编译为真实资源(.res
).cs
和.res
文件编译为程序集。 (需要使用/unsafe
) wevutil
将清单添加到将记录这些日志的计算机上。完成所有这些操作后,您可以使用程序集中的EventProvider
或常规EventProvider
(使用自定义EventDescriptor
)。