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

C#读取Windows事件日志时无法找到USB插入事件ID2003的求助

解决C#查询USB插拔事件(EventID 2003/2102)失败的问题

问题根源

直接通过EventID=2003查询会匹配所有日志中ID为2003的事件,而USB插拔的2003/2102事件属于特定提供者Microsoft-Windows-DriverFrameworks-UserMode,单独查EventID会被其他提供者的同名ID干扰;另外这类事件大概率不在你指定的System日志中,导致无法精准定位目标事件。

解决方案

1. 组合提供者与EventID的精准查询

修改查询语句,同时指定事件提供者和目标EventID,确保只过滤出USB插拔相关事件:

string query = "*[System[Provider/@Name='Microsoft-Windows-DriverFrameworks-UserMode' and EventID=2003]]";

查询拔出事件(EventID 2102)时,把语句中的2003替换为2102即可。

2. 确认事件所在的日志通道

这类设备操作事件通常存放在专门的操作日志中:

  • 打开事件查看器,导航到应用程序和服务日志 > Microsoft > Windows > DriverFrameworks-UserMode > Operational
  • 检查该日志中是否存在EventID 2003/2102的事件

如果事件确实在这里,需要修改代码中的日志名称:

EventLogQuery eventsQuery = new EventLogQuery("Microsoft-Windows-DriverFrameworks-UserMode/Operational", PathType.LogName, query);

3. 确保程序以管理员权限运行

部分系统事件日志需要管理员权限才能读取,右键点击程序或开发工具,选择「以管理员身份运行」后再测试。

修改后的完整代码示例

using System.Diagnostics.Eventing.Reader;
class Program
{
    static void Main(string[] args)
    {
        // 组合提供者和EventID的查询语句
        string query = "*[System[Provider/@Name='Microsoft-Windows-DriverFrameworks-UserMode' and EventID=2003]]";
        // 如果事件在Operational日志,替换为对应的日志名称
        EventLogQuery eventsQuery = new EventLogQuery("Microsoft-Windows-DriverFrameworks-UserMode/Operational", PathType.LogName, query);
        try
        {
            EventLogReader logReader = new EventLogReader(eventsQuery);
            for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent())
            {
                Console.WriteLine($"事件ID: {eventdetail.Id}");
                Console.WriteLine(eventdetail.FormatDescription());
                Console.WriteLine("---");
            }
        }
        catch (EventLogNotFoundException e)
        {
            Console.WriteLine("指定的日志不存在或无法访问: " + e.Message);
            return;
        }
        catch (UnauthorizedAccessException e)
        {
            Console.WriteLine("权限不足,请以管理员身份运行程序: " + e.Message);
            return;
        }
        Console.WriteLine("Done");
        Console.ReadLine();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:20:59