使用PNPUTIL备份设备驱动程序
2023-07-19
117
0
Windows下提供了一个工具 pnputil.exe,使用该工具可以管理系统中的驱动。
pnputil.exe提供的功能有:
- 添加驱动 add-driver
- 删除驱动 delete-driver
- 导出(备份)驱动 export-driver
- 枚举驱动 enum-drivers
- 枚举设备 enum-devices
- 枚举设备接口 enum-interfaces
这里我们使用 export-driver参数导出驱动:
- 首先打开设备管理器,选中要备份驱动的设备。
- 然后点击右键查看属性,查看详细信息.
- 选择INF 名称属性,记住这里的值。如这里为usbvideo.inf。
- 然后以管理员的方式运行cmd命令,执行如下命令。
C:\Windows\system32>pnputil /export-driver usbvideo.inf c:/mydriver
运行结果如下:
Microsoft PnP 工具
正在导出驱动程序包: usbvideo.inf
驱动程序包已成功导出。
驱动程序包总数: 1
已导出驱动程序包数: 1
注意:
需要备份的驱动目录必须存在,否则会备份失败。
打开刚指定的备份目录,可以看到备份后的驱动:
C:\Windows\system32>dir c:\mydriver
驱动器 C 中的卷是 系统
卷的序列号是 D8DB-50EF
c:\mydriver 的目录
2020/11/16 12:03 <DIR> .
2020/11/16 12:03 <DIR> ..
2020/05/16 10:41 47,056 SecureUSBVideo.dll
2020/05/16 10:41 20,958 usbvideo.inf
2020/05/16 10:41 306,496 usbvideo.sys
3 个文件 374,510 字节
2 个目录 80,659,054,592 可用字节
PNPUTIL常用方法示例
pnputil /add-driver x:\driver.inf <- Add driver package
pnputil /add-driver c:\oem\*.inf <- Add multiple driver packages
pnputil /add-driver device.inf /install <- Add and install driver package
pnputil /enum-drivers <- Enumerate OEM driver packages
pnputil /delete-driver oem0.inf <- Delete driver package
pnputil /delete-driver oem1.inf /force <- Force delete driver package
pnputil /export-driver oem6.inf . <- Export driver package
pnputil /export-driver * c:\backup <- Export all driver packages
pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1" <- Disables device specified by device instance ID
pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1" <- Enables device specified by device instance ID
pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1" <- Restarts device specified by device instance ID
pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1" <- Removes device specified by device instance ID
pnputil /scan-devices <- Scan the system for any device hardware changes
pnputil /enum-devices /connected <- Enumerate only connected devices on the system
pnputil /enum-devices /instanceid "ACPI\PNP0A08\1" <- Enumerate device with specific instance ID
pnputil /enum-devices /class Display <- Enumerate all devices with specific class
pnputil /enum-devices /problem 28 <- Enumerate all devices with specific problem code
pnputil /enum-devices /problem /ids <- Enumerate all devices with problems and display hardware/compatible IDs
pnputil /enum-interfaces /enabled <- Enumerate only enabled interfaces on the system
附pnputil工具的所有选项
Microsoft PnP 工具
PNPUTIL [/add-driver <...> | /delete-driver <...> |
/export-driver <...> | /enum-drivers |
/enum-devices [<...>] | /enum-interfaces [<...>] | /?]
命令:
/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
/enum-devices [/connected | /disconnected] [/instanceid <实例 ID>]
[/class <name | GUID>] [/problem [<code>]] [/ids] [/relations]
枚举系统上的所有设备。
/connected | /disconnected - 按连接的设备筛选或
按断开连接的设备筛选。
/instanceid <实例 ID> - 按设备实例 ID 筛选。
/class <名称 | GUID> - 按设备类名称或 GUID 筛选。
/problem [<代码>] - 按出现问题的设备筛选或
按特定问题代码筛选。
/ids - 显示硬件 ID 和兼容 ID。
/relations - 显示父级和子级设备关系。
示例:
仅枚举系统上已连接的设备:
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
枚举具有问题的所有设备并显示硬件/兼容 ID:
pnputil /enum-devices /problem /ids
/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}
/?
显示使用情况屏幕。