C# Windows事件-任何人都知道如何指定';关键词';价值

C# Windows事件-任何人都知道如何指定';关键词';价值,c#,windows,events,keyword,C#,Windows,Events,Keyword,使用C#将事件写入Windows事件时,“关键字”值始终为“经典”。我一直在网上搜寻,什么也找不到。 这可能吗?如果是的话,我想举个例子 干杯等我把你的意思说对了。您想在windows日志中写入。对吧? 在这种情况下,您需要使用方法。在描述中,您可以找到示例 如果您想添加除“Classic”之外的其他“关键字”-我想您需要在eventPayload数组中添加适当的枚举值。请尝试并告知结果。要编写带有自定义关键字标记的事件日志条目,您必须创建一个事件清单文件和一个资源dll。然后必须注册此清单,清

使用C#将事件写入Windows事件时,“关键字”值始终为“经典”。我一直在网上搜寻,什么也找不到。
这可能吗?如果是的话,我想举个例子


干杯

等我把你的意思说对了。您想在windows日志中写入。对吧?

在这种情况下,您需要使用方法。在描述中,您可以找到示例


如果您想添加除“Classic”之外的其他“关键字”-我想您需要在eventPayload数组中添加适当的枚举值。请尝试并告知结果。

要编写带有自定义关键字标记的事件日志条目,您必须创建一个事件清单文件和一个资源dll。然后必须注册此清单,清单必须引用资源文件。有两种方法可以实现这一点:

  • 使用
  • 使用nuget包提供的eventregister程序
  • 手动路线更复杂,但结果更清晰。在Daniel Gordon的文章“”的帮助下,您将能够正确地记录事件

    总结一下这个过程:首先,使用ecmangen创建一个清单。阅读该工具提供的帮助,它将引导您完成创建过程。使用自定义
    关键字
    部分编写清单后,使用mc编译清单,然后按照本文所述生成资源文件。要使用清单,必须将其安装为事件日志源。使用wevtutil程序执行此操作。如果不更改清单以指向先前创建的资源dll,程序将失败。这个过程的一个奇怪之处是,wevtutil程序不断报告错误,除非您将资源文件复制到其路径中不包含空格的位置

    成功注册事件源后,可以使用System.Diagnostics.Eventing命名空间将事件记录到其中。创建一个EventProvider,如下所示:

    var provider = new EventProvider( new Guid( "VALUE-OF-GUID-ATTRIBUTE-OF-PROVIDER-ELEMENT-IN-MANIFEST" ) );
    
    指定与清单对应的Eventdescriptor。看看编译清单时生成的cs文件

    EventDescriptor customDescriptor;
    unchecked
    {
        customDescriptor = new EventDescriptor( 0x2, 0x0, 0x10, 0x4, 0xa, 0x1, ( long ) 0x8000000000000001 );
    }
    
    最后,将Eventdescriptor传递给提供商以记录消息:

    var customEventResult = provider.WriteEvent( ref customDescriptor, (long)1, 1, "Custom Event" );
    
    这将创建一个事件日志条目,其中关键字设置为清单中定义的任何关键字,即掩码为
    0x1
    的关键字


    如果您想避免所有这些手动编译之类的操作,只需使用nuget安装Microsoft EventSource库即可。不幸的是,这条路线有两个缺点,一个是你不能定义自定义频道,第二个是自定义关键字是“脏的”,请看我冗长的问题

    你所说的“关键字”值总是“经典”是什么意思?你能提供一个代码示例来说明你所看到的吗?对不起,“关键字”值可以是以下标准事件关键字之一:标准事件关键字在StandardEventKeywords枚举中定义:AuditFailure AuditSuccess经典关联提示SQL WDI Context WDI Diag我正在使用C#EventLog Write来写事件,没有“关键字”参数…是否可以这样做?设置EventLogEntryType设置为“SuccessfulAudit”或“FailureAudit”将“Keywords”值设置为“Classic/SuccessfulAudit”或“Classic/FailureAudit”。“级别”值将始终为“信息”。谢谢你们的帮助。