在我们的应用程序中存在某些情况,其中发生非致命错误并且应用程序恢复.
在将所述项目填充到选择列表时,无法正确识别某些可导入项目的示例.错误不会使应用程序崩溃,但会提醒用户某些项目无法加载.
在这种情况下,错误将作为警告记录到应用程序事件日志中.这是应用程序恢复的非致命错误,但是如果需要,登录到事件日志可以让我们看到原始错误.
我们的问题是该软件需要能够与高级用户帐户一起安装.不是管理员帐户,我们将无法为应用程序创建自定义事件源.
目的是将错误写入“应用程序”事件源(已存在于应用程序事件日志中).但是,这样做也会导致类似于以下内容的文本.
无法找到源应用程序中的事件ID 0的描述.引发此事件的组件未安装在本地计算机上,或者安装已损坏.您可以在本地计算机上安装或修复该组件.
这是因为当我们编写它时,EventID为0.这种方法可以完成工作,但有更好的方法吗?是否有非管理员方式为应用程序事件源指定EventID以指示它来自我们的应用程序?
解决方法
您看到的错误无法找到源应用程序中的事件ID 0的描述.引发此事件的组件未安装在本地计算机上,或者安装已损坏.您可以在本地计算机上安装或修复该组件.是应用程序源的已注册事件消息文件没有事件ID为0的条目的结果.您看到的消息是从事件消息文件获取消息ID的模板并使用事件有效内容对其进行格式化的结果.
我一般不建议您劫持您不拥有的来源.无论是谁在消费这些活动,都对他们的意思和他们携带的信息有着特定的期望.
关于是否有非管理员方式来指定应用程序事件源的EventID以指示它来自我们的应用程序?,您期望事件ID规范意味着什么?来源决定了事件的来源.
编辑:
无论您是否提供非0的事件ID,您都将在事件查看器中收到错误,因为该源没有注册事件消息文件.即使它确实如此,您也可能必须使用在消息文件中有条目的事件ID(使事件的使用者感到困惑)或者没有条目且仍然得到错误的事件ID.