You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Diagnostics.EventLog#WriteEvent()无法找到特定事件ID的原因

背景

我尝试使用System.Diagnostics.EventLog#WriteEvent()作为New-WinEvent和Write-EventLog cmdlet的替代方案。

问题

我尝试用WriteEvent()写入以下日志:

  • 日志名称:Application
  • 源:Application Error
  • 事件ID:1005
$eventLog = [System.Diagnostics.EventLog]::new('Application')
$eventLog.Source = 'Application Error'
$eventLog.WriteEvent(
  [System.Diagnostics.EventInstance]::new(1005, 0, [System.Diagnostics.EventLogEntryType]::Error),
    @(
      'FilePath.exe',                            # FilePath
      'Application Name',                        # AppName
      0x1234,                                    # StatusCode
      1                                          # MediumType
    )
  )

但在事件查看器中收到以下提示:

无法找到来自源 Application Error 的事件 ID 1005 的描述。要么引发此事件的组件未安装在本地计算机上,要么安装已损坏。您可以在本地计算机上安装或修复该组件。

如果事件起源于另一台计算机,则必须随事件一起保存显示信息。

事件中包含以下信息:

FilePath.exe
Application Name
4660
1

消息资源存在,但在消息表中未找到该消息

另一方面,使用New-WinEvent cmdlet时能得到预期消息:

New-WinEvent -ProviderName "Application Error" -Id 1005 -Payload @(
  'FilePath.exe',                            # FilePath
  'Application Name',                        # AppName
  0x1234,                                    # StatusCode
  1                                          # MediumType
)

Windows 无法访问文件 FilePath.exe,原因如下之一:网络连接存在问题、文件所在磁盘或计算机上安装的存储驱动程序有问题,或者磁盘丢失。Windows 因此错误关闭了程序 Application Name。

程序:Application Name
文件:FilePath.exe

错误值列在附加数据部分。
用户操作

  1. 重新打开文件。这种情况可能是临时问题,再次运行程序时可能会自行纠正。
  2. 如果仍然无法访问文件:
    • 如果文件在网络上,请您的网络管理员验证网络是否存在问题以及是否可以联系服务器。
    • 如果文件在可移动磁盘(例如软盘或CD-ROM)上,请验证磁盘是否已完全插入计算机。
  3. 通过运行 CHKDSK 检查并修复文件系统。要运行 CHKDSK,请单击“开始”,单击“运行”,键入 CMD,然后单击“确定”。在命令提示符下,键入 CHKDSK /F,然后按 Enter。
  4. 如果问题仍然存在,请从备份副本还原文件。
  5. 确定同一磁盘上的其他文件是否可以打开。如果不能,则磁盘可能已损坏。如果是硬盘,请联系管理员或计算机硬件供应商寻求进一步帮助。

附加数据
错误值: 0x1234
磁盘类型: 0x1

我测试了其他事件源和ID,结果如下:

方法/Cmdlet源事件ID结果
WriteEvent()Application Error1000✔️
WriteEvent()Application Error1005提示“无法找到描述...”
WriteEvent()Application-Addon-Event-Provider1✔️
New-WinEventApplication Error1000无错误但无法设置消息中的%2、%3...
New-WinEventApplication Error1005✔️
New-WinEventApplication-Addon-Event-Provider1✔️
Write-EventLogApplication Error1000无错误但无法设置消息中的%2、%3...
Write-EventLogApplication Error1005提示“无法找到描述...”
Write-EventLogApplication-Addon-Event-Provider1无错误但无法设置消息中的%2、%3...

问题问询

我不想根据事件源/ID切换不同的方法或cmdlet,希望统一写入事件日志。请问为何使用WriteEvent()写入事件ID1005时会出现“无法找到来自源Application Error的事件ID1005的描述”的提示?

补充说明

我在运行环境中没有管理员权限,无法运行New-EventLog创建自定义日志名称。

内容的提问来源于stack exchange,提问作者SATO Yusuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:50:20