本文最后更新于563天前,其中的信息可能已经有所发展或是发生改变。
1.Devcon
DevCon (DevCon.exe) 是一种命令行工具,用于显示有关运行 Windows 的计算机上的设备的详细信息。 你也可以使用 DevCon 启用、禁用、安装、配置以及删除设备。 DevCon 使用以下语法。
devcon [/r] command [arguments]
DevCon 最初是且始终是代码示例,旨在作为示例,而不是要依赖的工具。 为了响应其受欢迎程度,我们创建了一些工具来替换 DevCon 的功能,同时遵循最佳做法并添加新功能。 请将 DevCon 使用情况替换为下面所述的解决方案。
2.PnPUtil
PnPUtil 是一种收件箱工具,允许用户查看有关设备和驱动程序的信息并更改其状态。
同时也是一种命令行工具,可让管理员对 驱动程序包执行操作。 示例包括:
- 将驱动程序包添加到 驱动程序存储区。
- 在计算机上安装驱动程序包。
- 从驱动程序存储区中删除驱动程序包。
- 枚举当前位于驱动程序存储区中的驱动程序包。 仅列出非内置包的驱动程序包。 内置驱动程序包是 Windows 或其 service pack 的默认安装中包含的程序包。
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 <instance ID> | /deviceid <device ID> [/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 <instance ID> | /deviceid <device ID> [/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 <instance ID> | /deviceid <device ID> [/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 <instance ID> | /deviceid <device ID> [/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 [<code>]] [/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 <GUID>]
枚举系统上的所有设备接口。
/enabled | /disabled - 按启用的接口筛选或
按禁用的接口筛选。
/class <GUID> - 按接口类 GUID 筛选。
示例:
仅枚举系统上的已启用接口:
pnputil /enum-interfaces /enabled
枚举具有特定接口类 GUID 的所有接口:
pnputil /enum-interfaces /class {884b96c3-56ef-11d1-bc8c-00a0c91405dd}
/?
显示使用情况屏幕。
3.等价表
Devcon 命令 | 说明 | 替代方法 |
---|---|---|
类 | 列出所有设备安装类。 | pnputil /enum-classes |
disable | 禁用设备。 | pnputil /disable-device |
driverfiles | 列出设备的已安装驱动程序文件。 | pnputil /enum-drivers /files |
drivernodes | 列出设备的驱动程序节点。 | pnputil /enum-devices /drivers |
enable | 启用设备。 | pnputil /enable-device |
find | 查找设备。 | pnputil /enum-devices /connected |
findall | 查找设备,包括当前未附加的设备。 | pnputil /enum-devices |
hwids | 列出设备的硬件 ID。 | pnputil /enum-devices /deviceids |
安装 | 创建测试设备并安装驱动程序。 | devgen /add /bus ROOT pnputil /add-driver <INF name> /install |
listclass | 列出安装程序类中的所有设备。 | pnputil /enum-devices /class <name 或 GUID> |
重新 启动 | 重新启动本地计算机。 | shutdown /r /t 0 |
删除 | 删除设备。 | pnputil /remove-device |
重新扫描 | 扫描新硬件。 | pnputil /scan-devices |
resources | 列出设备的硬件资源。 | pnputil /enum-devices /resources |
restart | 重启设备。 | pnputil /restart-device |
堆栈 | 列出设备的预期驱动程序堆栈。 | pnputil /enum-devices /stack |
status | 列出设备的运行状态。 | pnputil /enum-devices |
update | 手动更新设备。 | pnputil /add-driver <INF name> /install |
updateni | 手动更新设备 (非交互式) 。 | pnputil /add-driver <INF name> /install |
dp_add | 添加 (安装) 第三方 (OEM) 驱动程序包。 | pnputil /add-driver <INF 名称> |
dp_delete | 删除第三方 (OEM) 驱动程序包。 | pnputil /delete-driver |
dp_enum | 列出此计算机上安装的第三方 (OEM) 驱动程序包。 | pnputil /enum-drivers |
参考文章
[1] 设备控制台 (DevCon.exe) 命令 - Windows drivers | Microsoft Learn
点击数:56