微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows事件ID

Windows中是否为应用程序开发人员预留了特定范围的事件ID?

我正在开发一个.Net应用程序,它会将错误写入到Windows事件日志中。 这个应用程序实际上是以服务器为目标的,并且会被偏执的系统pipe理员作为一个计划任务来运行,他们会尽可能地locking它(包括使用一个减less的特权维护帐户来运行它)。 该应用程序将不会正式安装 – 事实上,我甚至没有build立这样的安装程序; 只是一个带有.exe和app.config文件的zip文件

这里有个技巧:在Windows中,您需要pipe理员权限才能在应用程序事件日志中创build一个源。 由于我不能指望这一点,我不想让过度的系统pipe理员需要创build一个,我使用“应用程序错误”(MS Office使用)作为后备。 (select一个更好的回退是我的待办事项列表,因为办公室是不经常安装在服务器上)。

问题是,我仍然希望我的事件突出一点,而不是只是伪装成Office。 这样,我的系统pipe理员就可以很容易地过滤掉事件查看器中的事件或他们select的日志聚合器。 我现在知道的最好的解决scheme是使用事件ID,但我担心与内部Windows事件冲突,特别是考虑到我的目标受众。

版本控制的生产环境

禁用屏幕保护程序给用户

C#/ .net:如何将联网打印机添加到本地PC帐户?

将键码转换为相关的显示字符

了解vs2010的基本Windows编程

我看了,但我找不到任何文件。 那么,是否有一个特定范围的事件ID我应该使用,我会好吗使用什么,或者我应该在这里一个完全不同的select?

无法使用Windows 7或Windows Server 2008(64位)从COM +目录导出32位ServicedComponent

向后兼容WPF应用程序创build使用点networking框架4.5

我可以使用C#/ .NET以编程方式禁用窗口自动播放function吗?

如何从设备pipe理器获取信息?

find用户networking服务的临时文件夹?

不是真的。 在顶层你有一个事件源。 每个事件源都有自己的事件类别。 每个事件消息由事件源“拥有”并落入其事件类别之一。 如果你打算把你的事件记录在别人的事件源下,你打破了这个约定,很有可能发生事件ID冲突。

另一方面, 事件ID在结构上与HRESULT类似,并且可以设置一个Customer位。 还有一个设施代码字段,但微软只为第三方提供一个设施(其余的都保留)。 即使你把这些东西搞糊涂,你仍然受到事件源所有者的支配, 如果微软曾经为你正在使用的“事件源”写了一些东西,并设置了“客户”位或“设施代码”(例如也许是非Windows组件,比如Office等),那么你就会面临同样的冲突危险。 或者,如果其他开发人员决定做同样的事情,你在做什么。 真正最安全的方法是定义你自己的事件源。

看来这是问题的关键

我担心与内部Windows事件冲突,特别是考虑到我的目标受众。

我不认为你必须担心,因为事件ID对应于一个特定的事件源,所以除非你使用完全相同的源,你不会让管理员感到不安。 例如,MS有时使用不同来源的相同ID 。

如果你想获得有关注册发布者和事件id的信息,你可以使用Wevtutil ,例如这将列出发布者。

wevtutil ep

从这里你可以得到一个发布者使用的特定事件id,你可以使用以下命令(在这个例子中使用了事件日志)

wevtutil gp Microsoft-Windows-EventLog /ge /gm:true

如果你擅长PowerShell,我相信你可以想出一个脚本来获得所有注册的事件id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐