问题描述
我想知道是否存在某些API /代码来禁用(当前)网络连接属性中的特定项?
如果是,您能否显示一个有效的代码示例,解释其详细信息,并指出所使用技术的某些限制(如果存在)?
解决方法
禁用这些绑定的API是INetCfgBindingPath::Enable
。 bindview示例说明了如何调用API。
在Windows 8和更高版本中,您也可以调用WMI方法/root/standardcimv2/MSFT_NetAdapterBindingSettingData::Disable
。以下是PowerShell的代码行,它说明了如何禁用从名为“ mb-port”的NIC到“ ms_msclient”驱动程序(也称为wkssvc)的绑定:
Get-CimInstance -Namespace root/standardcimv2 -Query 'SELECT * FROM MSFT_NetAdapterBindingSettingData WHERE Name = "mb-port" AND ComponentID = "ms_msclient"' | Invoke-CimMethod -MethodName Disable
请注意,GUI正在偷偷摸摸:它将多个绑定路径合并到同一复选框中。在您突出显示的示例中,从ms_msclient到NIC可能有2个绑定路径:一个在IPv4上,一个在IPv6上。当您清除/勾选复选框时,GUI会禁用/启用所有路径。如果要通过API进行操作,并希望执行同样的操作,则需要枚举所有从ms_msclient开始并进入NIC mb-port的绑定路径。