如何以编程方式禁用网络连接属性中的特定项目?

How programatically disable specific item in network connection properties?

我想知道是否存在一些 API/code 来禁用(当前)网络连接属性中的特定项目?

如果是,您能否展示一个工作代码示例、解释细节并指出所用技术的一些局限性(如果存在)?

禁用这些绑定的 API 示例是 INetCfgBindingPath::Enable. The 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 上。当您 clear/tick 复选框时,GUI disables/enables 所有路径。如果您通过 API 进入并想做同样的事情,您将需要枚举从 ms_msclient 开始的所有绑定路径并转到 NIC mb-port.