3

我正在尝试通过 Tapinstall 在 Windows 中控制多个 OpenVPN 的 TAP 驱动程序实例。似乎因为所有设备都具有相同的 HWID——“tap0901”——我无法使用 tapinstall 删除任何一个——当我发出

tapinstall.exe remove tap0901

此外,当我安装另一个实例时

tapinstall.exe install OemWin2k.inf tap0901

所有其他的都被重置(使用那些现有的 tap 安装打开的连接被破坏),因为 tapinstall 尝试更新所有现有实例上的驱动程序。

到目前为止,我的解决方案是将 INF 文件中指定的 hwid 的所有实例重命名为其他名称,并将 .cat 和 .sys 文件也重命名为这个新名称;但是,这会破坏驱动程序签名。

有谁知道管理多个 OpenVPN TAP 驱动程序实例的任何替代方法,这些方法允许我:

  1. 删除驱动程序的任何单个实例,而不干扰其他实例的操作
  2. 在不干扰其他实例运行的情况下安装新实例

Win32 API 调用也可以;我正在尝试编写一个程序来自动执行此操作。

谢谢您的帮助!

4

1 回答 1

6

如果有人想知道,我找到了一种方法来做到这一点,但这很hacky。受 devcon 源代码的启发。

  1. SetupDiCreateDeviceInfoList
  2. SetupDiCreateDeviceInfo
  3. SetupDiSetDeviceRegistryProperty
  4. SetupDiCallClassInstaller
  5. UpdateDriverForPlugAndPlayDevices
  6. SetupDiSetDeviceRegistryProperty - 将硬件 ID 重命名为此处唯一的名称。
于 2010-01-20T02:02:34.497 回答