赞
踩
PnPUtil是Windows内置的一个命令行工具,位于%windir%\system32目录下,用于管理员对驱动程序包执行安装、删除、枚举等相关操作:
通过管理员权限打开cmd,执行PnPUtil命令,其参数如下:
pnputil [/add-driver <...> | /delete-driver <...> | /export-driver <...> | /enum-drivers | /disable-device <...> | /enable-device <...> | /restart-device <...> | /remove-device <...> | /scan-devices <...> | /enum-devices <...> | /enum-interfaces <...> | /?]
1、/add-driver * <文件名.inf | .inf> [/subdirs][/install][/reboot]
此命令用于将驱动程序包添加到驱动程序存储区中,也是最常用的安装驱动程序的PnPUtil命令。
- /subdirs 参数将遍历驱动程序包的子目录,
- /install 参数将在匹配的设备上安装或者更新驱动,
- /reboot 参数将通过必要重启操作来完成驱动程序包的添加生效。
-
- 示例1:添加驱动程序包
- pnputil /add-driver x:\driver.inf
- (对应旧式命令:pnputil /a x:\driver.inf)
-
-
- 示例2:添加多个驱动程序包
- pnputil /add-driver c:\oem\*.inf
- (对应旧式命令:pnputil /a c:\oem\*.inf)
-
- 示例3:遍历子目录进行添加并安装驱动程序包
- pnputil /add-driver *.inf /subdirs /install
- (对应旧式命令:pnputil /a *.inf /subdirs /i)
2、/delete-driver <oem# .inf> [/uninstall][/force][/reboot]
此命令用于从驱动程序存储区中删除驱动程序包,有时直接删除设备管理器可能无效,通过管理员身份打开命令行窗口查看当前安装的驱动程序,然后通过PnPUtil命令进行驱动程序包的删除。这是PnPUtil的常用命令之一。
- /uninstall 卸载驱动程序包
- /force 强制卸载
- /reboot 重启以完成卸载操作
-
- 示例1:删除驱动程序包
- pnputil /delete-driver oem0.inf
- (对应旧式命令:pnputil /d oem0.inf)
-
- 示例2:强制删除并卸载驱动程序包
- pnputil /delete-driver oem0.inf /force /uninstall
- (对应旧式命令:pnputil /d oem0.inf /f /uninstall)
-
3、/export-driver <oem#.inf | *>
将驱动程序包从驱动程序存储区导出到目标目录。
4、/enum-driver
枚举驱动程序存储区中的所有第三方驱动程序包。
示例1:枚举OEM驱动程序包 pnputil /enum-drivers (对应旧式命令:pnputil /e)
5、/disable-device <instance ID>[/reboot]
禁用系统上的设备。
6、/enable-device <instance ID>[/reboot]
启用系统上的设备。
7、/restart-device <instance ID>[/reboot]
重新启用系统上的设备。
8、/remove-device <instance ID>[/subtree][/reboot]
从系统中删除设备。
/subtree 删除整个设备子树,包括子设备
9、/scan-devices [/instanceid <instance ID>][/async]
扫描系统中是否有任何设备硬件更改。
/instanceid <instance ID> 扫描设备子树改变 /async 异步扫描改变
10、/enum-devices [/connected][/disconnected][/instanceid <instance ID>][/class <name | GUID>][/problem [<problem code>]][/ids][/relations][/drivers]
枚举系统上所有的设备。
- /connnect | /disconnect 筛选连接的或者没有连接的设备
- /instanceid <instance ID> 通过设备实例ID筛选
- /class <name | GUID> 通过设备类名或者GUID筛选
- /problem [<code>] 筛选有问题的设备或者指定问题代码
- /ids 显示硬件ID或者兼容ID
- /drivers 显示匹配的或者已安装的驱动
11、/enum-interfaces [/enabled | /disable][/class 相同 <GUID>]
枚举系统上的所有设备接口。
- /enabled | disabled 筛选启用的或者禁用的接口
- /class <GUID> 筛选接口类GUID
12、/?
显示命令行语法。
此工具平时最常用的操作就是安装、卸载与枚举第三方的驱动程序。
通常,我们在安装pureOS后需要安装第三方的驱动程序,如蓝牙、WiFi、音频Audio等驱动,来实现蓝牙、WiFi等功能的使用。一般通过/add-driver参数、/subdirs参数以及/install参数来实现一次性添加并安装驱动程序。
pnputil /a *.inf /subdirs /install
有时候,对于同一个驱动,有可能安装了多次,那么在系统已安装的驱动程序包中可能存在多个inf文件,所以这会导致一个现象:通过在设备管理器中进行卸载设备,过一会卸载的设备又再次出现在设备管理器中,可能需要多次操作才能卸载成功。
这是因为选择进行卸载的设备会对应系统中的一个inf文件,在设备管理器中点击删除设备会把对应的inf删除,但是这个时候系统中关于此设备可能进行过多次安装,所以一个驱动文件系统中的三方驱动程序列表会对应多个inf名称。
那么,我们可以通过dism命令来直观的查看三方驱动程序列表,查看设备对应的原始inf文件在列表中对应的oem#.inf文件名称。
dism /online /get-drivers /format:table
然后通过pnputil命令来删除并卸载对应的oem#.inf文件,以确保某一设备对应的驱动被卸载,系统中无残留。
pnputil /d oem1.inf /uninstall
通过/enum-driver即可枚举系统中安装的所有三方驱动程序:
pnputil /enum-driver (pnputil /e)
检查系统日志:%windir%\inf\setupapi.dev.log
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。