如何找到正确的协议名称Eventlog c#

时间:2016-01-19 19:16:57

标签: c# windows service event-log

我的任务: 我想从我的printjobs中显示来自windows eventlog的条目。 我从msdn和不同的站点找到了各种教程,但我无法访问我的首选协议/服务名称。

Microsoft-Windows-PrintService

    my Code ( c#): 
 string lists = EventLog.LogNameFromSourceName("Microsoft-Windows-PrintService/Operational", ".");

但此代码无效。有人知道我的问题的解决方案或解决方法。 这是我在c#中的第一个项目。

提前致谢!

2 个答案:

答案 0 :(得分:0)

您的通话语法是正确的。我认为您在通话中指定的来源可能不存在。

如果你调用EventLog.SourcesExists(“Microsoft-Windows-PrintService / Operational”)它会返回false吗?如果是这样,那么您传递的源字符串不正确,您需要从事件查看器中找到正确的源。

编辑:为了回应您以后的帖子,我不认为权限与它有任何关系。我能够在不做任何特殊操作的情况下访问“应用程序和服务日志”来源。

根据上一篇文章event log sources cannot be listed from the API but must be mined from the registry。但是,我确实找到了一个可以生成所有事件源列表的应用程序EventLogSourcesView。找到您正在寻找的来源可能会有所帮助。

祝你好运!

答案 1 :(得分:0)

感谢您的回复。

是的,SourceExist方法返回false。 嗯..我不知道如何找到正确的服务名称。

对于“Windows协议”部分下列出的所有协议,SoruceExist方法仅返回true。其他协议位于“Anwendungs- und Dienstprotokolle”部分(我使用德语Windows版本 - 可能转换为“应用程序和服务协议”),该方法返回false。

在此位置,日志将保存在

 %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-PrintService%4Operational.evtx

我是否需要特殊权限才能“输入”这些日志(目前,Visual Studio是以管理员身份启动的,只有......足够吗?)

谢谢!