PnPUtil、DevGen 和 DevCon.exe 这三种工具的对比表格,涵盖它们的主要功能和区别:PnPUtil、DevGen、DevCon.exe 命令等价对照表,PnPUtil / DevGen / DevCon.exe 对比总表
PnPUtil 命令语法 - Windows drivers | Microsoft Learn
Windows 设备控制台 (Devcon.exe) - Windows drivers | Microsoft Learn
DevGen 命令语法 - Windows drivers | Microsoft Learn
PnPUtil(pnputil.exe)命令分类、特色、应用场景
底层调用:
setupapi.dll、cfgmgr32.dll、drvstore.dll;内置在 Win10 1607+/Win11,微软官方主推生产环境 PnP 命令行工具,管理员权限为绝大多数操作的前置条件Microsoft ...
分类总表
| 大类 | 子命令 | 核心特色 | 典型应用场景 |
|---|---|---|---|
| 一、驱动包仓库管理(DriverStore,核心强项) | /add-driver /delete-driver /enum-drivers /export-driver |
1. 直接操作%windir%\System32\DriverStore驱动仓库2. /add-driver支持批量递归扫描*.inf;/install标记匹配设备自动安装驱动3. 自动校验驱动 CAT 签名,入库前校验完整性4. /delete-driver支持/force强制删除;有引用保护,设备占用时默认拒绝删除5. /export-driver备份现有驱动包到外部目录 |
✅ 服务器批量预装驱动(Server Core 无 GUI)✅ 镜像部署、OS 预注入驱动包✅ 清理旧版 OEM 驱动、冗余驱动包✅ 驱动备份、迁移、离线驱动入库✅ 产线自动化装机脚本 |
| 二、设备生命周期管理(设备节点 DevNode) | /enable-device /disable-device /remove-device /scan-devices |
1. 操作内核 DevNode,下发 PnP IRP,控制设备启停 / 删除2. /remove-device /subtree可一次性删除整个设备子树(例如 USB 集线器 + 下级所有 USB 设备)3. /scan-devices = 扫描检测新硬件,等价设备管理器「扫描硬件改动」4. 支持按实例 ID、硬件 ID、设备类、总线批量筛选设备5. /force参数可强制禁用关键设备(谨慎) |
✅ 故障排查:网卡 / 声卡 / USB 设备异常,禁用再启用复位✅ 清理残留幽灵设备(已拔硬件,但注册表仍保留 DevNode)✅ 自动化脚本批量禁用多余硬件(工控机、虚拟机)✅ 热插拔硬件后强制触发 PnP 枚举 |
| 三、枚举查询与诊断(只读,普通用户可执行) | /enum-devices /enum-containers /enum-classes /enum-interfaces |
1. 丰富过滤参数:/connected、/drivers、/deviceids、/class、/bus2. /enum-devices /drivers:查看设备绑定的驱动节点、驱动排名(驱动优先级)3. /enum-containers:设备容器(一个物理设备包含多个子设备,如多功能 USB 适配器)4. /enum-classes:枚举设备安装类 GUID(Win11 22H2 新增)5. 输出可重定向到日志文件,用于自动化巡检 |
✅ 硬件资产自动盘点、导出硬件清单✅ 驱动冲突排查:对比硬件 ID、驱动版本、驱动排名✅ 查找带黄色感叹号故障设备(设备问题码)✅ 驱动开发调试,查看设备容器、设备接口 |
| 四、辅助控制 | /reboot(附属标志,非独立子命令) |
附加参数,操作完成后按需自动重启,仅在驱动安装 / 删除需要重启时触发,不强制重启 | 自动化脚本无人值守批量部署驱动 |
核心特色汇总
- 系统内置,无需额外分发:Win10/1607 之后自带,Server Core 环境必备,不需要像 DevCon、DevGen 单独安装 WDK。
- 驱动仓库 + 设备节点一体化:同时管理 DriverStore 驱动包(文件层面)和内核 DevNode 设备实例(硬件实例层面),DevCon 仅能操作设备节点,不具备完整 DriverStore 管理能力。
- 标准化、脚本友好:输出结构化文本,支持管道、输出重定向,适合 PowerShell/Bat 自动化流水线,微软官方推荐作为 DevCon 替代品。
- 安全保护机制
- 驱动引用计数保护:正在使用的驱动包默认不能删除
- 驱动排名机制:
/add-driver /install不会强制降级替换更高优先级驱动,避免驱动被强行覆盖导致蓝屏,这是和第三方驱动工具最大区别 - 支持强制操作,但强制参数需要管理员,有风险提示
- 版本边界:早期简单参数
-a/-d/-e是旧版简写;现代完整功能(disable/enable/remove-device)需要 Win10 2004 及以上;/enum-classes等新命令需要 Win11 22H2+。
局限性(边界,重点)
- 仅本地操作,无远程计算机设备管理(DevCon 独有远程查询能力)。
- 不能直接创建虚拟 ROOT 设备,虚拟测试设备必须搭配 DevGen。
- 不能手动直接修改硬件资源(IRQ、内存范围),仅能依靠 pnp.sys 自动资源重平衡。
- 无法手动选择同硬件多个候选驱动,只能依靠 Windows 原生驱动排名机制。
场景选型速判
| 业务需求 | 是否选 pnputil | 备注 |
|---|---|---|
| 生产服务器、工控、批量装机,驱动入库 / 清理 | ✅首选 | 官方推荐,稳定可靠 |
| 驱动开发,创建 ROOT 虚拟测试设备 | ❌单独不行 | DevGen 创设备 + pnputil 安装驱动,组合使用 |
| 远程主机查询硬件设备 | ❌ | 只能用遗留 DevCon |
| 脚本自动化巡检、导出硬件清单 | ✅首选 | 输出日志方便留存 |
| 清理幽灵设备、复位异常硬件 | ✅首选 | 替代 devcon remove |
典型命令示例(高频)
:: 批量导入当前目录所有inf驱动包并自动匹配安装
pnputil /add-driver *.inf /subdirs /install
:: 枚举所有已连接设备并附带驱动信息
pnputil /enum-devices /connected /drivers
:: 删除指定实例ID设备(含子设备树)
pnputil /remove-device "ROOT\ABC\1234" /subtree
:: 导出驱动包备份
pnputil /export-driver oem0.inf D:\DriverBackup
PnPUtil FMEA 风险矩阵(pnputil.exe,顶域:驱动安装 / 设备操作场景)
说明:RPN = 严重度 S × 发生度 O × 探测度 D;S/O/D 取值 1~10,数值越大风险越高
适用:
pnputil /add-driver /install、remove/enable、scan-devices 自动化运维、产线、服务器部署场景
| 序号 | 失效模式 | 潜在根因 | S | O | D | RPN | 风险等级 | 控制措施 |
|---|---|---|---|---|---|---|---|---|
| 1 | pnputil 执行报错,驱动包入库失败(DriverStore Stage 失败) | 1.INF 语法错误、INF 文件损坏2. 驱动包缺少依赖文件(sys/cat)3.CAT 签名无效,crypt32 校验不通过4.DriverStore 目录权限不足、磁盘满、磁盘只读 | 8 | 3 | 4 | 96 | 高 | 1. 部署前预校验 INF 完整性、CAT 证书链2. 提前校验磁盘剩余空间;校验目录 ACL 权限3. 预执行pnputil /enum-drivers验证 DriverStore 可访问;查看 setupapi.dev.log |
| 2 | 驱动入库成功,但无法绑定设备,设备黄色感叹号 | 1. 硬件 ID / 兼容 ID 不匹配 INF [Models]2. 内核 ci.dll DSE 驱动签名策略拦截(安全启动开启)3. 底层总线驱动异常,DevNode 状态异常4. 资源冲突,pnp.sys 资源分配失败 | 9 | 3 | 3 | 81 | 高 | 1. 核对硬件 ID 与 INF Models 段;2. 检查安全启动、内核 DSE 策略;3. 查看 PnP 事件日志、setupapi.dev.log 设备问题码;4. 预扫描硬件pnputil /scan-devices |
| 3 | pnputil 命令执行成功,设备启动后蓝屏 / 死机 | 1. 驱动二进制本身 bug,与平台不兼容2. 驱动版本冲突,旧驱动残留未清理3. 过滤驱动冲突,设备栈异常 | 10 | 2 | 4 | 80 | 高 | 1. 测试环境先验证驱动;生产前快照备份;2. 清理旧版本 OEM 驱动包;3. 核查设备栈,排查第三方过滤驱动 |
| 4 | pnputil 执行返回成功,但设备未加载驱动(静默失效) | 1. 驱动排名优先级低于系统自带内置驱动2. 设备实例状态异常,DevNode 标记为已阻止3. 缺少/install参数,仅入库不绑定设备 |
7 | 4 | 4 | 112 | 极高 | 1. 必须带/install参数;2. 使用/enum-devices /drivers查看驱动排名;3. 检查设备问题码 CM_PROB_XXX |
| 5 | pnputil /remove-device 删除设备失败,设备无法移除 | 1. 上层驱动持有设备引用,IRP_MN_QUERY_REMOVE 被否决2. 设备正在被应用占用3. 权限不足,非管理员执行 | 8 | 4 | 3 | 96 | 高 | 1. 关闭占用硬件业务程序;2. 管理员权限运行;3. 查看 setupapi 日志定位否决 IRP 的驱动;必要时安全模式操作 |
| 6 | pnputil 程序启动失败,直接退出 | 1.pnputil.exe 文件损坏丢失2. 依赖 DLL 损坏:setupapi.dll/cfgmgr32.dll3. 系统 PnP 子系统异常 | 7 | 2 | 3 | 42 | 低 | sfc /scannow、DISM 修复系统映像;检查系统文件完整性 |
| 7 | 批量递归/subdirs扫描 INF,漏识别部分驱动包 |
1. 子目录 INF 文件名特殊、权限拒绝访问2.INF 编码异常无法解析 | 6 | 3 | 5 | 90 | 中 | 1. 脚本增加文件遍历前置校验;2. 单独测试每一个子目录 INF;日志输出全部扫描结果 |
| 8 | /delete-driver 删除驱动包失败,提示驱动正在被引用 | 1. 设备仍绑定该驱动,引用计数 > 02. 存在幽灵设备残留占用驱动引用 | 7 | 4 | 4 | 112 | 极高 | 1. 先删除对应设备节点;2. 清理幽灵设备;3. 谨慎使用/force强制删除,有蓝屏风险 |
| 9 | /scan-devices扫描硬件改动无响应,不发现新硬件 |
1.pnp.sys 内核 PnP 子系统卡死2. 总线驱动故障,无法上报新设备 | 8 | 2 | 4 | 64 | 中 | 查看系统 PnP 事件日志;重启系统重置内核设备树;核查总线驱动状态 |
二、FTA 故障树(顶事件:驱动安装失败,使用 pnputil /add-driver/install)
顶事件:T:pnputil 执行驱动安装失败
T:pnputil执行驱动安装失败
├─ M1:【阶段1】驱动包入库(Stage)失败
│ ├─ X1:INF文件损坏/语法错误
│ ├─ X2:驱动包文件缺失(.sys/.cat丢失)
│ ├─ X3:驱动CAT签名校验失败(证书失效/篡改)
│ ├─ X4:DriverStore磁盘空间不足 / 只读 / ACL权限不足
│ └─ X5:setupapi.dll / drvstore.dll损坏,无法处理驱动包
│
├─ M2:【阶段2】驱动入库成功,但设备匹配失败(找不到目标设备)
│ ├─ X6:硬件ID/兼容ID和INF [Models]不匹配
│ ├─ X7:目标DevNode设备实例不存在,未枚举到硬件
│ └─ X8:未加 /install 参数:仅入库,不执行设备绑定
│
├─ M3:【阶段3】驱动匹配成功,但内核拒绝加载驱动
│ ├─ X9:DSE驱动强制签名拦截(安全启动开启,无有效签名)
│ ├─ X10:驱动镜像损坏,I/O管理器加载失败
│ └─ X11:内核pnp.sys异常,无法下发IRP_MN_START_DEVICE
│
└─ M4:【阶段4】驱动加载成功,但设备启动失败(设备带黄色感叹号)
├─ X12:硬件资源冲突(内存/IRQ/MSI资源分配失败)
├─ X13:底层总线驱动异常,设备栈构建失败
├─ X14:驱动自身初始化代码执行失败
└─ X15:第三方过滤驱动冲突,拦截PnP IRP
故障树补充说明
- 时序链路:入库 (M1) → 设备匹配 (M2) → 内核加载 (M3) → 设备启动 (M4);任意一个子事件发生,都会触发顶事件 “驱动安装失败”
- 日志定位路径
- M1 入库失败:优先查看
setupapi.dev.log,INF 解析、签名、DriverStore 报错 - M2 设备匹配失败:
pnputil /enum-devices /drivers查看硬件 ID、驱动排名 - M3/M4 内核加载 / 启动失败:系统事件日志(PnP、WHEA)、内核转储、CI 驱动签名事件
- M1 入库失败:优先查看
- 重要边界:pnputil 本身只是编排工具;M3/M4 属于内核侧(pnp.sys、ci.dll、硬件驱动)故障,pnputil 无法绕过内核校验
PnPUtil、DevGen、DevCon.exe 命令等价对照表
前提说明:
- DevCon 为遗留工具,微软不再维护;DevGen 仅用于创建 / 删除 ROOT 虚拟软件测试设备,没有驱动管理能力;PnPUtil 为现代系统内置首选。
- 旧 DevCon
devcon install拆分为两条命令组合:DevGen 创设备 + PnPUtil 安装驱动。- 所有设备修改类操作均需要管理员权限。
| DevCon 旧命令 | DevCon 功能描述 | 现代等价命令(PnPUtil + DevGen) | 备注 |
|---|---|---|---|
devcon find <hwid> |
查找匹配硬件 ID 的设备 | pnputil /enum-devices /hwid <hwid> |
只读查询,普通用户可执行 |
devcon findall <hwid> |
查找所有设备(含已断开幽灵设备) | pnputil /enum-devices /disconnected /hwid <hwid> |
包含不在位残留 DevNode |
devcon listclass <classname> |
枚举指定设备安装类设备 | pnputil /enum-devices /class <classGUID> |
PnPUtil 需要类 GUID,不是类名称 |
devcon enable <instanceid> |
启用设备 | pnputil /enable-device <instanceid> |
下发 IRP_MN_START_DEVICE |
devcon disable <instanceid> |
禁用设备 | pnputil /disable-device <instanceid> |
下发 IRP_MN_STOP_DEVICE |
devcon remove <instanceid> |
删除设备节点 | pnputil /remove-device <instanceid> |
增加 /subtree 参数可删除整个子设备树 |
devcon rescan |
扫描硬件改动,触发 PnP 重枚举 | pnputil /scan-devices |
触发 pnp.sys 总线重新枚举硬件 |
devcon restart <instanceid> |
重启设备(停用再启用) | pnputil /restart-device <instanceid> |
Win10 2004 + 支持 |
devcon install xxx.inf root\mydev |
创建 ROOT 虚拟设备 + 安装驱动包 | devgen /add /bus ROOT /hardwareid root\mydevpnputil /add-driver xxx.inf /install |
⚠️ DevGen 仅创建虚拟 DevNode,不会安装驱动,必须搭配 pnputil |
devcon drivernodes <instanceid> |
查看设备候选驱动列表、驱动排名 | pnputil /enum-devices /drivers /instanceid <instanceid> |
查看驱动版本、OEM INF 名称、驱动优先级 |
devcon classes |
列出所有设备安装类 | pnputil /enum-classes |
Win11 22H2 新增 pnputil 该参数 |
devcon stack <instanceid> |
查询设备栈(过滤驱动、功能驱动、总线驱动) | pnputil /enum-devices /stack /instanceid <instanceid> |
Win11 22H2 + 支持,查看完整设备驱动栈 |
devcon status <instanceid> |
查询设备状态、设备问题码 | pnputil /enum-devices /instanceid <instanceid> |
输出包含设备状态、CM_PROB 问题代码 |
devcon hwids <instanceid> |
获取硬件 ID、兼容 ID | pnputil /enum-devices /deviceids /instanceid <instanceid> |
直接输出 HardwareID / CompatibleID |
devcon resources <instanceid> |
查询硬件资源(内存、IO、中断 / MSI) | pnputil /enum-devices /resources /instanceid <instanceid> |
Win11 22H2 + 支持 |
devcon dp_add xxx.inf |
将驱动包导入 DriverStore | pnputil /add-driver xxx.inf |
仅入库,不绑定设备;增加/install自动匹配安装 |
devcon dp_delete oemxx.inf |
删除 DriverStore 内驱动包 | pnputil /delete-driver oemxx.inf |
被设备引用时默认拒绝;/force强制删除(风险高) |
devcon dp_enum |
枚举 DriverStore 内所有第三方驱动包 | pnputil /enum-drivers |
列出 oem 驱动、版本、发布商、INF 路径 |
devcon /r |
操作完成自动重启 | pnputil 子命令 /reboot |
作为附加标志,不是独立命令 |
devcon @\\remotePC find * |
远程计算机设备查询 | ❌ 无等价命令 | PnPUtil、DevGen不支持远程;仅 DevCon 独有能力 |
DevGen 独立命令对照表(DevGen 无 DevCon 直接对应,驱动开发测试专用)
| DevGen 命令 | 功能 | 说明 |
|---|---|---|
devgen /add /bus ROOT /hardwareid root\testdev |
创建 ROOT 总线虚拟设备 | 仅新建 DevNode,重启后设备保留 |
devgen /add /bus SWD /hardwareid swd\testdev |
创建 SWD 软件虚拟设备 | 软件设备,系统重启自动销毁 |
devgen /remove /hardwareid root\testdev |
删除 DevGen 创建的虚拟设备节点 | 仅删除 DevNode,不卸载驱动包 |
重要迁移注意事项
- DevCon
install是最大坑点 DevCon 旧命令一条同时完成两件事:①新建 ROOT 设备节点;②加载 INF 安装驱动。 现代拆分成两步:DevGen 创设备 + PnPUtil 安装驱动。只运行 DevGen,硬件设备会出现,但不带驱动,黄色感叹号。 - 参数风格差异
- DevCon:习惯空格分隔参数,部分命令使用
@标记实例 ID - PnPUtil:统一使用
/xxx命名参数,实例 ID 带空格需要英文双引号包裹
- DevCon:习惯空格分隔参数,部分命令使用
- 版本门槛
/restart-device、/stack、/resources:Win10 2004 / Win11 22H2 起才支持- 旧版 Win10 缺少这些参数,只能用
disable + enable模拟重启设备
- 不支持迁移场景 远程主机设备查询,没有 pnputil/devgen 替代方案,只能保留 DevCon。
快速迁移示例
旧 DevCon
devcon install test.inf root\test01
现代等价脚本
devgen /add /bus ROOT /hardwareid root\test01
pnputil /add-driver test.inf /install
PnPUtil / DevGen / DevCon.exe 对比总表
| 项目 | PnPUtil(pnputil.exe) | DevGen(devgen.exe) | DevCon.exe(Device Console) |
|---|---|---|---|
| 官方定位 | Windows 收件箱内置,现代标准 PnP 驱动 / 设备管理工具,微软主推生产环境工具 | WDK 测试工具,仅用于创建 / 删除虚拟软件设备、ROOT 根枚举测试设备 | WDK 遗留开发测试工具;最初是 SetupAPI 示例 Demo,官方标记弃用,不推荐新项目Microsoft ... |
| 是否内置系统 | ✅ Win10/11 自带,C:\Windows\System32\pnputil.exe |
❌ 不内置,WDK22H2 + 才附带,禁止单独二次分发,仅限测试 | ❌ 不内置,需要安装 WDK/SDK 获取 |
| 底层调用 DLL | setupapi.dll、cfgmgr32.dll、drvstore.dll、advapi32.dll | cfgmgr32.dll、setupapi.dll,直接创建 DevNode(软件设备) | setupapi.dll、cfgmgr32.dll(SetupDi、CM_经典 API)Microsoft ... |
| 核心能力 | 1. DriverStore 驱动包入库、删除、导出、枚举驱动2. 枚举设备、启用 / 禁用 / 删除设备、扫描硬件重枚举3. 查询硬件 ID、实例 ID、驱动节点、设备栈信息4. 驱动包签名校验、驱动安装 | 只做一件事:创建 / 销毁软件虚拟设备、ROOT 根枚举测试设备不能管理真实硬件、不能安装驱动包;创建 DevNode 后,需要 pnputil 安装驱动配套使用 | 1. 枚举本地 / 远程计算机设备、查询硬件 ID、驱动节点2. enable/disable/remove/rescan 设备3. 旧版install创建 ROOT 测试设备(该功能现已由 DevGen 替代)4. 支持远程计算机设备查询(pnputil 无远程能力) |
| 典型使用场景 | 运维、生产服务器、批量驱动部署、设备故障排查、自动化脚本 | 驱动开发测试:虚拟设备测试、模拟 ROOT 总线设备、驱动测试用例(禁止生产环境) | 老驱动项目遗留脚本、老旧测试环境;新项目微软建议迁移到 pnputil+devgen 组合 |
| 持久化特性 | 操作真实硬件设备,改动永久生效 | SWD 软件设备:重启自动消失;ROOT 根枚举设备重启保留 | 删除设备节点,驱动包保留在 DriverStore |
| 局限性 | 不支持远程计算机设备管理;不能直接创建虚拟测试设备 | 无驱动管理能力,仅创建 / 删除设备节点;仅管理员;仅限测试 | 部分 API 老旧;部分行为非标准化;官方不再维护迭代;devcon install创建根设备已废弃 |
| 官方推荐状态 | ✅ 推荐首选 | ✅ 测试场景专用 | ❌ 弃用,仅存量维护,不推荐新项目 |
底层原理与调用链简述
1. PnPUtil
参数解析 → setupapi.dll(INF 解析、驱动包入库) → cfgmgr32.dll(CM API 操作 DevNode) → IOCTL 下发 pnp.sys 内核 PnP 管理器; 可直接操作 DriverStore,内置驱动包哈希、签名校验。
2. DevGen
参数解析 → cfgmgr32.dll → 直接调用内核 PnP 接口创建软件设备 DevNode; 不处理驱动包、不解析 INF;只创建设备节点;驱动安装需要搭配pnputil /add-driver /install。
替代旧 DevCon
devcon install创建根设备的能力Microsoft ...
3. DevCon.exe
命令解析 → SetupAPI SetupDi 系列 API 创建设备信息集 HDEVINFO → cfgmgr32 CM API; 本质是SetupAPI 的示例 Demo 程序,微软不推荐生产环境重度依赖;支持远程设备查询是它独有的遗留特性。
关键差异要点(重点)
- 职责分割
- PnPUtil:驱动包管理 + 真实硬件设备生命周期管理(生产主力)
- DevGen:只生成虚拟测试设备节点(纯测试,不碰驱动文件)
- DevCon:老式一体化设备管理工具,现已拆分,原 devcon install 拆分为 DevGen (创设备)+PnPUtil (装驱动)
- 远程能力 DevCon 支持远程主机设备查询;PnPUtil、DevGen仅本地计算机。
- 生产 / 测试边界 DevGen 明确禁止用于生产环境;DevCon 不建议生产;pnputil 是唯一允许生产环境使用。
常用等价命令对照(迁移参考)
| 旧 DevCon 命令 | 功能 | 现代等价组合 |
|---|---|---|
| devcon find / findall | 枚举设备 | pnputil /enum-devices /connected |
| devcon disable | 禁用设备 | pnputil /disable-device |
| devcon remove | 删除设备节点 | pnputil /remove-device |
| devcon install xxx.inf | 创建 ROOT 测试设备 + 安装驱动 | devgen /add /bus ROOT + pnputil /add-driver xxx.inf /install |
| devcon rescan | 扫描新硬件 | pnputil /scan-devices |
边界区分
- 真实物理硬件(PCI/USB 网卡显卡):只用 pnputil
- 驱动开发,需要虚拟 ROOT / 软件设备做驱动测试:DevGen + PnPUtil 组合
- DevCon:仅维护旧脚本迁移,新项目不再使用。
| 命令工具 | 功能描述 | 主要用途 | 示例命令 |
|---|---|---|---|
| PnPUtil | 管理驱动程序的安装、卸载和查询 | 安装、删除和列出设备驱动程序 | pnputil /enum-devices |
| DevCon.exe | 管理设备驱动的启用/禁用/安装操作 | 启用、禁用、安装和查询设备驱动 | devcon enable "DeviceID" |
| DISM | 部署映像服务和管理工具,用于管理系统映像 | 修复系统映像、管理驱动程序和功能 | dism /online /cleanup-image /restorehealth |
| PowerShell | 更强大的命令行脚本工具,支持设备和驱动管理 | 自动化管理任务,管理设备和驱动程序,系统管理 | Get-WmiObject Win32_PnPSignedDriver |
| Device Manager | 图形化的设备管理工具 | 用于管理硬件设备,安装驱动程序等操作(通过GUI) | 无命令行示例(使用图形界面) |
| 命令工具 | 功能描述 | 主要用途 | 示例命令 |
|---|---|---|---|
| PnPUtil | 管理设备驱动程序的安装、卸载和查询 | 安装、删除和列出设备驱动程序 | pnputil /enum-devices |
| DevGen | 生成与设备相关的配置文件 | 创建设备配置文件 | devgen /create-config "文件路径" |
| DevCon.exe | 设备管理命令行工具,启用/禁用设备驱动 | 启用、禁用、安装和查询设备驱动 | devcon find * |
| DISM | 部署映像服务和管理工具,用于管理系统映像 | 修复系统映像、管理驱动程序和功能 | dism /online /cleanup-image /restorehealth |
| PowerShell | 命令行脚本工具,功能更强大 | 自动化任务,管理设备和驱动程序,系统管理 | Get-WmiObject Win32_PnPSignedDriver |
| 命令工具 | 功能描述 | 主要用途 | 示例命令 |
|---|---|---|---|
| PnPUtil | 管理驱动程序的安装和卸载 | 列出、安装、删除设备驱动程序 | pnputil /enum-devices |
| DevGen | 生成设备配置文件 | 创建设备配置文件,通常与硬件相关 | devgen /create-config "文件路径" |
| DevCon.exe | 管理设备驱动的启用/禁用/安装 | 启用、禁用、安装设备驱动,替代设备管理器 | devcon enable "DeviceID" |
PnPUtil、DevGen 和 DevCon.exe 这三种工具的对比,涵盖它们的主要功能和区别:
| 工具名称 | PnPUtil | DevGen | DevCon.exe |
|---|---|---|---|
| 功能描述 | 用于安装、删除和管理设备驱动程序。 | 用于生成和管理设备安装信息(主要用于驱动程序开发)。 | 用于管理设备和驱动程序,包括启用、禁用、重启设备等操作。 |
| 用途 | 主要用于驱动程序的管理。 | 驱动程序开发中用于生成设备和驱动程序安装的 INF 文件。 | 用于在命令行下管理设备,支持与设备进行交互(如启用/禁用设备)。 |
| 操作范围 | 管理设备驱动程序,包括添加、删除、查询和更新驱动。 | 生成设备安装相关信息,主要用于驱动程序开发人员。 | 管理本地和远程计算机上的设备,操作广泛,包括设备启用、禁用等。 |
| 使用环境 | 主要用于 Windows 系统的设备驱动管理。 | 主要用于 Windows 驱动开发环境。 | 用于 Windows 系统,支持命令行交互,适用于设备管理。 |
| 命令行支持 | 支持命令行操作。 | 不提供广泛的命令行支持,主要通过开发工具使用。 | 支持命令行操作,可通过命令行对设备进行各种操作。 |
| 是否支持远程设备管理 | 不直接支持远程设备管理。 | 不支持远程管理。 | 支持远程设备管理,可以管理本地和远程计算机的设备。 |
| 是否需要管理员权限 | 是,需要管理员权限。 | 需要管理员权限。 | 是,需要管理员权限。 |
| 是否包含在 Windows 中 | 包含在 Windows 中,通常在系统中自带。 | 需要从 Windows 驱动程序开发包 (WDK) 中获取。 | 包含在 Windows 中,通常可以通过命令行工具访问。 |
| 主要命令示例 | pnputil /add-driver <路径>(添加驱动) |
用于生成 INF 文件,具体命令依赖于开发工具和需要的文件类型。 | devcon disable <设备ID>(禁用设备) |
- PnPUtil 主要用于设备驱动程序的管理,特别是驱动的安装、更新和删除。
- DevGen 主要面向驱动程序开发人员,帮助生成设备安装信息,如 INF 文件。
- DevCon.exe 则是一个更通用的设备管理工具,能够启用、禁用、重启设备等,适用于日常的设备管理工作,支持本地和远程设备操作。
|
DevCon 是一个由微软提供的命令行工具,用于管理设备驱动程序。它提供了一种在命令行中管理设备的便捷方式,可以执行各种设备管理任务,如安装、卸载、禁用、启用和列出设备驱动程序等。 这个工具的使用场景包括但不限于:
对于系统管理员、设备开发人员和驱动程序开发人员来说,DevCon 是一个非常有用的工具,它能够简化设备管理和驱动程序管理的任务,并提高工作效率。 不过需要注意的是,DevCon 工具虽然强大,但在某些情况下可能存在一些限制,比如无法处理某些特定类型的设备或驱动程序。此外,它也可能需要管理员权限才能执行某些操作,因此在使用时需要谨慎,并遵循相关的安全和最佳实践。 |
|
DevCon 是一个由微软提供的命令行工具,用于管理设备驱动程序。它允许用户在命令行中执行许多设备管理任务,如安装、卸载、禁用、启用和列出设备驱动程序。 DevCon 最初是作为 Windows 驱动程序开发工具包(Windows Driver Kit,WDK)的一部分发布的。WDK 是用于开发、测试和部署 Windows 驱动程序的工具包。DevCon 通过命令行接口提供了对设备和驱动程序的丰富管理功能,使得开发和调试驱动程序更加便捷。 使用 DevCon 可以执行的一些常见任务包括:
DevCon 提供了一种在命令行中管理设备驱动程序的便捷方式,尤其对于自动化和批处理操作非常有用。它的命令行接口可以嵌入到脚本中,使得设备管理操作可以自动化执行。 需要注意的是,随着 Windows 版本的更新和演变,微软也可能会更新和改进 DevCon 工具,以适应新的设备管理需求和功能。 |
|
DevCon 命令的发展可以大致分为以下阶段:
DevCon 命令经历了不断的改进和发展,以满足用户不断增长的设备管理需求,并适应新的系统和技术环境。它成为了许多系统管理员、设备开发人员和驱动程序开发人员的重要工具之一。 |
|
DevCon 命令是一个强大的工具,可以帮助用户在命令行中管理 Windows 系统上的设备和驱动程序。DevCon 的功能可以按如下分类:
这些功能可以帮助用户在命令行中对系统中的设备和驱动程序进行广泛的管理和控制。DevCon 可以处理各种复杂的任务,并为系统管理员、设备开发人员和驱动程序开发人员提供便捷的工具。 |
|
DevCon 命令在以下场景中非常有用:
DevCon 命令提供了一个强大的工具集,可以用于各种设备管理和驱动程序管理任务,从而帮助用户简化管理、提高效率并快速解决问题。 |
|
初级应用的 DevCon 命令大纲:
通过掌握这些基本的 DevCon 命令,用户可以开始进行设备管理和驱动程序管理的基本操作,从而更好地控制和维护系统中的硬件设备。 |
|
中级应用的 DevCon 命令大纲:
通过掌握这些中级应用的 DevCon 命令,用户可以进行更加高级的设备管理和驱动程序管理操作,进一步优化系统的性能和稳定性。 |
|
高级应用的 DevCon 命令大纲:
通过掌握这些高级应用的 DevCon 命令,用户可以进行更深入的设备管理和故障排除,实现更精细化和高效率的系统维护。 |
专家级应用的 DevCon 命令大纲:
通过深入理解和应用这些专家级应用的 DevCon 命令,用户可以在设备管理和驱动程序开发领域获得更高水平的掌握和应用能力。 |
|
顶尖级应用的 DevCon 命令大纲:
通过掌握这些顶尖级应用的 DevCon 命令,用户可以在设备管理和驱动程序开发领域达到行业领先水平,实现高效、安全和稳定的系统运行和管理。 |
|
PnPUtil 和 DevCon 都是微软提供的用于管理设备和驱动程序的命令行工具。它们在某些方面有所不同,而微软更倾向于推荐使用 PnPUtil 的原因主要包括以下几点: 内置支持:PnPUtil 是 Windows 操作系统的一部分,因此可以在所有支持的 Windows 版本上直接使用,而 DevCon 需要单独下载并安装。 数字签名支持:PnPUtil 具有对数字签名的良好支持。它能够验证设备驱动程序的数字签名,并帮助用户确保驱动程序的真实性和完整性。 适用性广泛:PnPUtil 可以用于管理各种类型的设备,包括网络、存储、打印和其他硬件设备。它可以添加、删除和禁用设备驱动程序。 简化的语法:相对于 DevCon,PnPUtil 的命令语法更加简单易懂,更符合一般用户的使用习惯。 微软推荐使用 PnPUtil 是因为它作为内置工具具有更广泛的适用性和更好的兼容性,并且支持数字签名验证,使设备和驱动程序的管理更加方便和安全。 |
|
PnPUtil 和 DevCon 都是微软提供的用于管理设备和驱动程序的命令行工具,它们之间的主要区别在以下几个方面: 功能:PnPUtil 主要用于添加、删除和禁用设备驱动程序,而 DevCon 更多用于查询和控制设备状态和属性,例如列出可用设备、启用或禁用特定设备、重新启动设备等。 命令语法:PnPUtil 的命令语法相对简单易懂,而 DevCon 则需要更复杂的命令语法。 数字签名验证:PnPUtil 具有对数字签名的良好支持。它能够验证设备驱动程序的数字签名,并帮助用户确保驱动程序的真实性和完整性。而 DevCon 不支持数字签名验证。 内置支持:PnPUtil 是 Windows 操作系统的一部分,因此可以在所有支持的 Windows 版本上直接使用,而 DevCon 需要单独下载并安装。 适用范围:PnPUtil 可以用于管理各种类型的设备,例如网络、存储、打印等设备,而 DevCon 主要是用于管理硬件设备。 PnPUtil 和 DevCon 都是用于管理设备和驱动程序的工具,但它们的功能、语法和适用范围各有所不同。用户可以根据自己的需求选择其中之一来管理设备和驱动程序。 |
|
除了 PnPUtil 和 DevCon,还有一些其他工具可用于设备和驱动程序的管理。以下是其中一些常见的工具: Device Manager(设备管理器):这是 Windows 操作系统中内置的图形界面工具,用于查看和管理计算机上安装的硬件设备和驱动程序。可以通过设备管理器来添加、删除、禁用、启用设备,更新驱动程序等操作。 Windows PowerShell:PowerShell 是一种强大的命令行脚本环境,可用于管理各个方面的 Windows 操作系统。它提供了许多与设备和驱动程序相关的命令和模块,可以进行设备的查询、控制和配置。 WMIC(Windows Management Instrumentation Command-line):WMIC 是 Windows 上的命令行实用程序,用于管理操作系统和硬件设备。可以使用 WMIC 查询和控制设备驱动程序,例如启动、停止、卸载等操作。 Driver Verifier Manager(驱动程序验证管理器):这是一个 Windows 工具,用于验证和检测设备驱动程序的问题。它可以帮助识别和解决驱动程序引起的系统稳定性和性能问题。 这些工具在不同的场景中有不同的用途和优势,用户可以根据实际需求选择合适的工具来管理设备和驱动程序。 |
pnputil /?
Microsoft PnP 工具
PNPUTIL [/add-driver <...> | /delete-driver <...> |
/export-driver <...> | /enum-drivers |
/enum-devices [<...>] | /enum-interfaces [<...>] |
/disable-device <...> | /enable-device <...> |
/restart-device <...> | /remove-device <...> |
/scan-devices [<...>] | /?]
命令:
/add-driver <filename.inf | *.inf> [/subdirs] [/install] [/reboot]
将驱动程序包添加到驱动程序存储中。
/subdirs - 遍历驱动程序包的子目录。
/install - 在任何匹配的设备上安装/更新驱动程序。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
添加驱动程序包:
pnputil /add-driver x:\driver.inf
添加多个驱动程序包:
pnputil /add-driver c:\oem\*.inf
添加和安装驱动程序包:
pnputil /add-driver device.inf /install
/delete-driver <oem#.inf> [/uninstall] [/force] [/reboot]
从驱动程序存储中删除驱动程序包。
/uninstall - 从任何使用驱动程序包的设备中卸载驱动程序包。
/force - 删除驱动程序包,即使有设备正在使用它。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
删除驱动程序包:
pnputil /delete-driver oem0.inf
强制删除驱动程序包:
pnputil /delete-driver oem1.inf /force
/export-driver <oem#.inf | *> <目标目录>
从驱动程序存储中将驱动程序包导出到目标目录中。
示例:
导出驱动程序包:
pnputil /export-driver oem6.inf .
导出所有驱动程序包:
pnputil /export-driver * c:\backup
/enum-drivers
枚举驱动程序存储中的所有第三方驱动程序包。
示例:
枚举所有 OEM 驱动程序包:
pnputil /enum-drivers
/disable-device | /deviceid [/reboot]
禁用系统上的设备。
/deviceid <device ID> - 禁用带匹配设备 ID 的所有设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
禁用设备:
pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
禁用具有特定硬件/兼容 ID 的所有设备:
pnputil /disable-device /deviceid "USB\Class_03"
/enable-device | /deviceid [/reboot]
启用系统上的设备。
/deviceid <device ID> - 启用带匹配设备 ID 的所有设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
启用设备:
pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
启用具有特定硬件/兼容 ID 的所有设备:
pnputil /enable-device /deviceid "USB\Class_03"
/restart-device | /deviceid [/reboot]
重启系统上的设备。
/deviceid <device ID> - 重启带匹配设备 ID 的所有设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
重启设备:
pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
重新启动具有特定硬件/兼容 ID 的所有设备:
pnputil /restart-device /deviceid "USB\Class_03"
/remove-device | /deviceid [/subtree] [/reboot]
尝试从系统中删除设备。
/deviceid <device ID> - 删除带匹配设备 ID 的所有设备。
/subtree - 删除整个设备子树,包括任何子设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
删除设备:
pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
删除具有特定硬件/兼容 ID 的所有设备:
pnputil /remove-device /deviceid "USB\Class_03"
/scan-devices [/instanceid <实例 ID>] [/async]
扫描系统以查找任何设备硬件更改。
/instanceid <实例 ID> - 在设备子树中扫描更改。
/async - 异步扫描更改。
示例:
扫描设备:
pnputil /scan-devices
/enum-devices [/connected | /disconnected] [/instanceid <实例 ID>]
[/class <name | GUID>] [/problem []] [/deviceids]
[/relations] [/drivers]
枚举系统上的所有设备。
/connected | /disconnected - 按连接的设备筛选或
按断开连接的设备筛选。
/instanceid <实例 ID> - 按设备实例 ID 筛选。
/class <名称 | GUID> - 按设备类名称或 GUID 筛选。
/problem [<代码>] - 按出现问题的设备筛选或
按特定问题代码筛选。
/bus [<name | GUID>]-显示总线枚举器名称和总线类型 GUID 或
按总线枚举器名称或总线类型 GUID 筛选。
/deviceids-显示硬件/兼容 ID。
/relations - 显示父级和子级设备关系。
/drivers - 显示匹配的驱动程序和已安装的驱动程序。
/stack-显示设备堆栈信息。
/interfaces - 显示设备接口。
/properties - 显示所有设备属性。
示例:
仅枚举系统上已连接的设备:
pnputil /enum-devices /connected
枚举具有特定实例 ID 的设备:
pnputil /enum-devices /instanceid "ACPI\PNP0A08\1"
枚举具有特定类的所有设备:
pnputil /enum-devices /class Display
pnputil /enum-devices /class {4d36e97d-e325-11ce-bfc1-08002be10318}
枚举具有特定问题代码的所有设备:
pnputil /enum-devices /problem 28
pnputil /enum-devices /problem 0xA
枚举具有特定总线的所有设备:
pnputil /enum-devices /bus PCI
pnputil /enum-devices /bus {c8ebdfb0-b510-11d0-80e5-00a0c92542e3}
枚举具有问题的所有设备并显示硬件/兼容 ID:
pnputil /enum-devices /problem /deviceids
/enum-interfaces [/enabled | /disabled] [/class ]
枚举系统上的所有设备接口。
/enabled | /disabled - 按启用的接口筛选或
按禁用的接口筛选。
/class <GUID> - 按接口类 GUID 筛选。
示例:
仅枚举系统上的已启用接口:
pnputil /enum-interfaces /enabled
枚举具有特定接口类 GUID 的所有接口:
pnputil /enum-interfaces /class {884b96c3-56ef-11d1-bc8c-00a0c91405dd}
/?
显示使用情况屏幕。
|
Device Console 帮助: classfilter 添加、删除和重新排序类筛选器。 classes 列出所有设备安装类。 disable 禁用设备。 driverfiles 列出设备的已安装驱动程序文件。 drivernodes 列出设备的驱动程序节点。 enable 启用设备。 find 查找设备。 findall 查找设备,包括当前未连接的设备。 help 显示 Devcon 帮助。 hwids 列出设备的硬件 ID。 install 手动安装设备。 listclass 列出设置类中的所有设备。 reboot 重新启动本地计算机。 remove 移除设备。 rescan 扫描新硬件。 resources 列出设备的硬件资源。 restart 重新启动设备。 sethwid 修改列出的根枚举设备的硬件 ID。 stack 列出设备的预期驱动栈。 status 列出设备的运行状态。 update 手动更新设备。 updateni 手动更新设备(非交互式)。 dp_add 添加(安装)第三方(OEM)驱动程序包。 dp_delete 删除第三方(OEM)驱动程序包。 dp_enum 列出安装在此计算机上的第三方(OEM)驱动程序包。 以上是 devcon 命令的列表和说明。您可以根据需要使用适当的命令来管理设备和驱动程序。 |
|
Devcon 是一个用于学习目的的代码示例。 设备控制台帮助: classfilter 添加、删除和重新排序类过滤器。 classes 列出所有设备安装类。 disable 禁用设备。 driverfiles 列出设备的已安装驱动程序文件。 drivernodes 列出设备的驱动程序节点。 enable 启用设备。 find 查找设备。 findall 查找设备,包括当前未连接的设备。 help 显示 Devcon 帮助。 hwids 列出设备的硬件 ID。 install 手动安装设备。 listclass 列出设置类中的所有设备。 reboot 重新启动本地计算机。 remove 移除设备。 rescan 扫描新硬件。 resources 列出设备的硬件资源。 restart 重新启动设备。 sethwid 修改列出的根枚举设备的硬件 ID。 stack 列出设备的预期驱动程序堆栈。 status 列出设备的运行状态。 update 手动更新设备。 updateni 手动更新设备(非交互式)。 dp_add 添加(安装)第三方(OEM)驱动程序包。 dp_delete 删除第三方(OEM)驱动程序包。 dp_enum 列出此计算机上安装的第三方(OEM)驱动程序包。 |
|
Devcon 禁用命令 禁用具有指定硬件或实例 ID 的设备。 仅适用于本地计算机。(如果需要重启,请添加 -r 选项。) Copy Code
<id> 的示例:
推荐的等效命令: Copy Code
这是一种较新的工具,用于管理设备。 |
|
请尝试以下几种方法:
通过上述方法中的一个或多个,应该能够找到系统中所有设备类别的相关信息。如果仍然遇到问题,请提供更多关于 |
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
|
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
这些命令应该可以帮助您进行设备属性和信息的查询、驱动程序的安装和卸载、设备树的操作、设备状态的监控、设备驱动程序的备份和恢复,以及驱动程序版本的控制。 |
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
shellCopy Code
利用批处理脚本结合 DevCon 命令进行批量设备管理和驱动程序管理操作,以提高效率和一致性。 |
驱动程序调试和分析
设备控制和定制
驱动程序开发和修改
设备管理脚本编写
驱动程序安全性评估
这些更正后的命令和使用方法应该可以帮助您在驱动程序调试和分析、设备控制和定制、驱动程序开发和修改、设备管理脚本编写,以及驱动程序安全性评估方面获得更好的体验。 |
|
最新版本的
这些示例展示了每个命令的用法,你可以根据需要选择合适的命令并提供相应的参数。 |

浙公网安备 33010602011771号