首页 文章

写入应用程序事件源是否可以接受?

提问于
浏览
7

在我们的应用程序中存在某些情况,其中发生非致命错误并且应用程序恢复 .

在将所述项目填充到选择列表时,无法正确识别某些可导入项目的示例 . 错误不会使应用程序崩溃,但会警告用户某些项目无法加载 .

在这种情况下,错误将作为警告记录到应用程序事件日志中 . 这是应用程序恢复的非致命错误,但是如果需要,登录到事件日志可以让我们看到原始错误 .

我们的问题是该软件需要能够与高级用户帐户一起安装 . 不是管理员帐户,我们将无法为应用程序创建自定义事件源 .

目的是将错误写入“应用程序”事件源(已存在于应用程序事件日志中) . 但是,执行此操作会导致包含类似于以下内容的文本 .

无法找到源应用程序中的事件ID 0的描述 . 引发此事件的组件未安装在本地计算机上,或者安装已损坏 . 您可以在本地计算机上安装或修复该组件 .

这是因为当我们编写它时,EventID为0 . 这种方法可以完成工作,但是有更好的方法吗?是否有非管理员方式为应用程序事件源指定EventID以指示它来自我们的应用程序?

2 回答

  • 0

    您看到的错误无法找到源应用程序中的事件ID 0的描述 . 引发此事件的组件未安装在本地计算机上,或者安装已损坏 . 您可以在本地计算机上安装或修复该组件 . 是应用程序源的已注册事件消息文件没有事件ID为0的条目的结果 . 您看到的消息是从事件消息文件获取消息ID的模板并使用事件有效内容对其进行格式化的结果 .

    我一般不建议您劫持您不拥有的来源 . 无论是谁在消费这些活动,都对他们的意思和他们携带的信息有着特定的期望 .

    关于是否有非管理员方式来指定应用程序事件源的EventID以指示它来自我们的应用程序?,您期望事件ID规范意味着什么?来源决定了事件的来源 .

    编辑:

    无论您是否提供非0的事件ID,您都将在事件查看器中收到错误,因为该源没有注册事件消息文件 . 即使它确实如此,您也可能必须使用在消息文件中有条目的事件ID(使事件的使用者感到困惑)或者没有条目且仍然得到错误的事件ID .

  • 0

    您可以将Application Event ID作为参数传递:(示例:234)

    EventLog.WriteEntry("Application", "your log message here", EventLogEntryType.Warning,  234);
    

    进一步阅读EventLog.WriteEntry方法

    http://msdn.microsoft.com/en-us/library/xzwc042w.aspx

相关问题