使用 Devcon 删除不存在的硬件?

Kal*_*ane 3 automation automated-install

我正在从装有 Windows XP SP3 的机器上自动移除 USB 打印机。为此,我使用了 Microsoft 的Devcon Utility。

运行命令:

devcon findall *hp*
Run Code Online (Sandbox Code Playgroud)

返回:

USBPRINT\HEWLETT-PACKARDHP_LASERJET_PROFESSIONAL_P1606DN\7&8885729&0&USB001: HP
LaserJet Professional P1606dn
1 matching device(s) found.
Run Code Online (Sandbox Code Playgroud)

运行命令:

devcon remove *USBPRINT*
Run Code Online (Sandbox Code Playgroud)

返回:

No devices removed.
Run Code Online (Sandbox Code Playgroud)

我已经尝试了硬件 ID 和通配符的多种组合,但都没有成功。将设备插入计算机并运行上述删除命令将删除硬件。

问题来自我使用 devcon 管道查找来确定设备是否已插入以便可以自动配置。如果我无法删除它,即使它没有插入,我的脚本也会检测到它。

我已经用多台 USB 打印机和一个 USB 鼠标对此进行了测试,它们都表现出相同的行为,这让我相信这是 Devcon 的正常行为。

有解决方法吗?如何删除不再连接的硬件条目?

小智 7

Devcon 确实有效。您只需要确保针对您的操作系统使用正确版本的 devcon。

看看这个链接http://freneticrapport.blogspot.com/2011/05/windows-hiddennot-connected-device.html

要为您的操作系统安装正确的 devcon 版本:

  • 安装 Windows 驱动程序工具包
  • 转到开始 -> 程序 -> 开发工具包 -> WDK XXXX -> 构建环境 -> Windows [目标] -> Windows [目标] 免费构建环境,将 [目标] 替换为您正在构建的适当版本的 Windows。
  • 转到 WDK 安装目录中的 src\setup\devcon 文件夹并运行: build -ceZ

然后,您可以使用以下命令移除设备:

devcon remove "@PCI\VEN_1000&DEV_0060&SUBSYS_1F0C1028&REV_04\4&10333E29&0&0030"
Run Code Online (Sandbox Code Playgroud)

请注意引号和@符号,因为它们是移除隐藏设备所必需的。