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