有人给了我一个测试程序来将记录写入windows事件日志(但我没有源代码)。我理解编写和查看事件日志的一般方法,但该程序的行为非常特殊,我可以编写记录,其中有一个不存在的源。 在... / eventlog / application中甚至没有注册表项,因此没有格式化库。
如果我从我自己的代码尝试,我可以写这样的记录,但Windows事件查看器然后总是告诉我一些关于“描述无法找到”(这是正确的,我明白为什么会发生这种情况)。
现在的问题是:既然外国测试可以做到这一点,它必须以某种方式 - 但如何?
很多thx !! : - )答案 0 :(得分:1)
好的,最后我找到了它(也是,得到了源代码) - prog创建了注册表项(可能在调用CreateEventSource()时发生),它只是在刷新regedit之前不可见: - |
而且,它注册了一个格式化的lib,只是它是我不能依赖的东西:C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ EventLogMessages.dll
或者,我可以吗?
啊,我们在这里寻求解释: Difference between EventLog.WriteEntry and EventLog.WriteEvent methods 所以,我不能,因为我没有使用.Net ...: - |
现在,如果我现在从MY prog发送另一个事件(使用相同的,新创建的源,作为外部编程),我通常会在事件查看器中看到它。 这意味着,WriteEntry()实际上不会直接写入包含文本的不同/特殊类型的evt日志记录(与编写一个msg目录ID + params的标准方法相反),而是格式化lib中必须有一些技巧使EventViewer应用某种“默认”格式。
我有什么想法可以做到这一点?除了复制上面的EventLogMessages.dll之外? : - )
好的,终于在http://msdn.microsoft.com/en-us/magazine/cc163446.aspx找到了关于这个问题的答案 “这个文件叫做EventLogMessages.dll,它包含65,536个事件描述,每个描述都包含字符串”%1“,一个占位符,用于你想写的任何字符串”
我希望得到类似“messageid = *”的内容,但这似乎太简单了: - |
但也许其他人对这里发生的事情感兴趣...