Windows事件ID

Joe*_*orn 9 .net windows eventlog-source event-log

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

我正在研究一个将错误写入Windows事件日志的.Net应用程序.此应用程序实际上以服务器为目标,并将由偏执的sys管理员作为计划任务运行,他们希望尽可能地将其锁定(包括使用减少的权限维护帐户运行它).该应用程序将不会正式安装 - 事实上,我甚至没有为此构建安装程序; 只是一个包含.exe和app.config文件的zip文件.

这是诀窍:在Windows中,您需要管理员权限才能在应用程序事件日志中创建源.由于我不能指望这一点,我不想让过度工作的系统管理员需要创建一个,我使用"应用程序错误"(由MS Office使用)作为后备.(选择一个更好的后备是在我的待办事项清单上,因为办公室不经常安装在服务器上).

问题是我仍然希望我的活动能够脱颖而出,而不仅仅是伪装成Office.这样,我的系统管理员可以轻松过滤到事件查看器中的那些事件或他们选择的日志聚合器.我现在知道的最佳解决方案是使用事件ID,但我担心与内部Windows事件冲突,特别是考虑到我的目标受众.

我看了,但我找不到任何关于此的文件.那么,我应该使用特定范围的事件ID,我可以使用任何东西吗,或者我应该在这里看一个完全不同的选项?

Luk*_*uke 4

并不真地。在顶层,您有一个事件源。每个事件源都有自己的事件类别。每个事件消息均由事件源“拥有”,并属于其事件类别之一。如果您要将事件记录在其他人的事件源下,则您就违反了此约定,并且很可能会发生事件 ID 冲突。

另一方面,事件 ID在结构上与 HRESULT 类似,并且您可以设置一个客户位。还有一个设施代码字段,但微软只为第三方提供一项设施(其余保留)。即使你弄乱了这些位,你仍然受到事件源所有者的摆布;如果 Microsoft 曾经向您正在使用的事件源写入某些内容并设置客户位或设施代码(例如可能是 Office 等非 Windows 组件),您将再次面临同样的冲突危险。或者如果其他开发人员决定做你正在做的同样的事情。实际上,最安全的方法是定义您自己的事件源。