如何生成类似于提供的事件日志

时间:2014-02-03 15:22:57

标签: c# .net active-directory event-log

以下是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}

1 个答案:

答案 0 :(得分:0)

Here's one way

从我阅读的方式来看,你需要:

  1. 使用ManifestGenerator(EcManGen.exe)为您的应用创建清单骨架。
  2. 使用清单描述您要保留的数据。
  3. 使用ManifestCompiler(mc.exe)编译清单,从而产生(除其他外).cs.rc文件。
  4. 使用ResourceCompiler(rc.exe)将.rc编译为真实资源(.res
  5. 使用C#编译器(csc.exe)将.cs.res文件编译为程序集。 (需要使用/unsafe
  6. 将程序集添加到项目中。
  7. 作为管理员,运行wevutil将清单添加到将记录这些日志的计算机上。
  8. 完成所有这些操作后,您可以使用程序集中的EventProvider或常规EventProvider(使用自定义EventDescriptor)。