2013-05-02 39 views
1

有人给我一个测试程序,将记录写入Windows事件日志(但我没有源代码)。我理解编写和审查事件日志的一般方法,但该程序的行为非常特殊,我可以编写记录的方式,它有一个不存在的来源。 甚至在.../eventlog/application中都没有注册表项,因此没有格式化库。如何使用不存在的源代码写Windows事件日志记录

如果我从我自己的代码尝试,我可以写这样的记录,但Windows事件查看器然后总是告诉我一些关于“无法找到描述”(这是正确的,我明白为什么会发生这种情况)。

现在的问题是:由于外国测试程序可以做到这一点,它必须可能以某种方式 - 但如何?

很多thx !! :-)

回答

0

好的,最后我发现它(也有源代码) - prog创建注册表项(可能在调用CreateEventSource()时发生),它只是在刷新注册表之前不可见: - |

而且,它确实注册一个格式化的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 +参数的标准方法相反),而是格式化中必须有一些技巧lib以使EventViewer应用某种“默认”格式。

任何想法我可以做到这一点?除了复制上面的EventLogMessages.dll? :-)

OK,终于找到了这一个在http://msdn.microsoft.com/en-us/magazine/cc163446.aspx 答案“此文件被称为EventLogMessages.dll,它包含65536所事件说明,其中的每一个组成的字符串‘%1’,一个占位符无论你想写什么字符串“

我希望像”messageid = *“但似乎太简单: - |

但也许有人对这里发生的事情感兴趣...

相关问题