OpenVPN TAP驱动程序安装

ata*_*mir 3 tap openvpn

我试图通过tapinstall在Windows中控制OpenVPN的TAP驱动程序的多个实例.似乎因为所有设备都具有相同的HWID - 'tap0901' - 我无法使用tapinstall删除任何一个 - 当我发出时它们全部消失

tapinstall.exe remove tap0901
Run Code Online (Sandbox Code Playgroud)

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

tapinstall.exe install OemWin2k.inf tap0901
Run Code Online (Sandbox Code Playgroud)

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

到目前为止,我的解决方案是将INF文件中指定的hwid的所有实例重命名为其他内容,并将.cat和.sys文件重命名为此新名称; 然而,这打破了驾驶员的签名.

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

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

Win32 API调用也没关系; 我正在尝试编写一个程序来实现自动化.

谢谢您的帮助!

ata*_*mir 6

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

  1. SetupDiCreateDeviceInfoList
  2. SetupDiCreateDeviceInfo
  3. SetupDiSetDeviceRegistryProperty
  4. SetupDiCallClassInstaller
  5. UpdateDriverForPlugAndPlayDevices
  6. SetupDiSetDeviceRegistryProperty - 将硬件ID重命名为此处唯一的名称.