Windows运维
+ -

使用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参数导出驱动:

  1. 首先打开设备管理器,选中要备份驱动的设备。
  2. 然后点击右键查看属性,查看详细信息.
  3. 选择INF 名称属性,记住这里的值。如这里为usbvideo.inf。

pnputil

  1. 然后以管理员的方式运行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}

  /?

    显示使用情况屏幕。

0 篇笔记 写笔记

使用PNPUTIL备份设备驱动程序
Windows下提供了一个工具 pnputil.exe,使用该工具可以管理系统中的驱动。pnputil.exe提供的功能有:添加驱动 add-driver 删除驱动 delete-driver导出(备份)驱动 export-driver枚举驱动 enum-drivers枚举设备 enum-dev......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!