我需要在 Windows 7 上自动卸载并重新安装驱动程序。手动执行此操作的过程如下:
- 开始
- 右键单击计算机>管理
- 设备管理器 > 网络适配器
- 右键单击 Intel(R) Dual Band Wireless-AC 7260 > 卸载
- 请勿删除,不要选中删除选项,只需点击“确定”即可卸载。
- 右键单击网络适配器 > 扫描硬件更改
我需要定期执行这些步骤,所以我想找到一种自动化的方法。
我发现这两个命令行工具看起来很相关,但它们似乎都不能完全满足我的要求。
西米克
# Outputs a list. I can parse this to find the index of the device.
wmic nic get name, index
wmic path win32_networkadapter where index=<from above> call disable
wmic path win32_networkadapter where index=<from above> call enable
这些命令的输出表明它们做了它们应该做的事情,但它并不具有与卸载和重新安装驱动程序相同的效果。
实用程序
pnputil -e
这将输出一个列表。它似乎不包含设备管理器中使用的相同的人类可读名称(上面的 wmic 包含),但我看到列出了这个设备,我认为就是它:
Published name : oem186.inf
Driver package provider : Intel
Class : Network adapters
Driver date and version : 08/01/2013 16.1.3.1
Signer name : Microsoft Windows Hardware Compatibility Publisher
不过,我对此有几个问题。当我进入 GUI 设备管理器并右键单击驱动程序 > 属性 > 驱动程序选项卡 > 驱动程序详细信息时,它列出了以下文件:
C:\windows\system32\DRIVERS\Netwfw02.dat
C:\windows\system32\DRIVERS\NETwsw02.sys
C:\windows\system32\drivers\vwifibus.sys
这些都不是pnputil
调用它的名称。此外,“详细信息”选项卡 >“包含的 Infs”调用它netvwifibus.inf
- 也不是pnputil
调用它的东西。
另一个问题pnputil
是它似乎没有卸载命令。它只有pnputil -d
,据说是用于删除包(什么是包?它与驱动程序有何不同?它们是一样的吗?)我的手动说明明确是不要删除驱动程序,而只是卸载它。我甚至犹豫是否尝试使用此删除选项,因为如果最终结果是错误的,我认为没有简单的方法可以撤消它。
概括
wmic
可以禁用和启用驱动程序,但我想卸载并重新安装它们。
pnputil
可以添加和删除软件包。删除这个词让我感到害怕,因为它似乎没有提供任何轻松备份或回滚的方法,所以我没有尝试过。另外,软件包到底是什么?它与驱动程序有什么关系……是同一件事吗?
答案1
PnP、软件包和驱动程序
您的设备是 PnP(即插即用)设备 - 这意味着 Windows 会自动选择用于该设备的驱动程序。有一个地方驱动程序是本地计算机上的驱动程序存储区。驱动程序存储区包含驱动程序包。一个设备可以有多个驱动程序包,一个驱动程序包可以有多个设备的驱动程序。当设备没有分配驱动程序时,PnP 管理器会查找兼容的驱动程序,对它们进行排序,选择最佳的一个并安装该驱动程序。
当您手动下载并安装驱动程序时,其副本将作为包放置在驱动程序存储中。
当您手动卸载驱动程序并在设备管理器中选择删除选项时 - 它也会从驱动程序存储区中删除相应的包。
wmic、pnputil
为了自动化您提到的确切步骤,wmic disable
和pnputil -d
都不适合您。pnputil
只是添加/删除包,PnP 管理器选择要安装的内容。
您想卸载驱动程序(但不删除它的包并强制进行 PnP 重新扫描)。
建议的解决方案
我会尝试使用Windows 设备控制台 (Devcon.exe)。 它是remove
命令应该从设备树中删除设备并保留包 - 就像步骤 4 和 5 一样。通过使用rescan
您可以触发第 6 步。您可以devcon
在Windows 驱动程序工具包。
您还可以使用以下方法编写程序公共设备安装功能