我的问题类似于https://serverfault.com/questions/257118/how-to-disable-ipv6-on-a-particular-network-interface-using-server-core- 仅适用于 Windows 7。这些答案乍一看似乎很有帮助,但对我来说并不完全令人满意。我觉得缺少了一些东西。
我想解除 vmware Player 软件的 vmware 网络适配器上的 IPv6 绑定,因为这会导致我们的某些产品出现问题。我不敢为整个系统禁用 IPv6。我想在客户端 PC 上安装我们的产品时执行特定于适配器的 IPv6 解除绑定,因此仅通过鼠标单击取消选中属性是行不通的。
我通过检查 的子键来读取网络适配器的 GUID HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
。如果我找到 vmnet 子键,可能是通过查找合适的 ComponentId(例如“*vmnetadapter1”),我读取该NetCfgInstanceId
值以获取适配器的 GUID。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Linkage
然后我从-valuesBind
和Export
中删除具有此 GUID 的行Route
。
上述问题的答案仅谈到了Bind
密钥,但我在 UI 中取消选中适配器设置中的 IPv6 协议条目之前和之后比较了注册表,发现其他值也发生了变化。我还注意到,我之前提到的 vmnet 子项的值发生了变化UpperBind
- 该行Tcpip6
被删除了。所以我也这样做了。
我希望通过更改这 4 个注册表值,下次打开适配器设置时,我会发现 IPv6 协议条目未选中。但我没有。我甚至尝试在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\NetCfgLockHolder
更改之前创建密钥,然后在更改之后将其删除 - 就像我通过 UI 取消选中条目时发生的情况一样。仍然不起作用。重新启动 Windows 也没有改变任何东西。
手动取消选中时更改的另一个注册表值是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\Config
。但是这个 REG_BINARY 值对我来说是难以理解的,所以我不知道是否也应该更改这个值(如果可以的话)。
我遗漏了什么?是不是我无论如何都应该更改的一个奇怪的键?我是否必须以某种方式强制系统重新读取注册表?
还是注册表方法错误?我使用 powershell 方法没有取得多大进展Disable-NetworkadapterBinding
,因为 Win7 不提供此功能。“非官方”Microsoft 工具“Hyper-V Network VSP Bind (nvspbind)”确实取消了该复选框,但其许可证禁止发布,并且“您只能在 Windows Server 2008 Hyper-V 上安装和使用 (...)...”(没有 Win7)。
如果我写得不清楚,请评论,我会尽力改进。感谢@BlueCompute 提到这是解除绑定,而不是禁用;这会带来更好的搜索结果。