是否可以使用C#和.Net库或注册表为选定的网络适配器启用/禁用IPv4和IPv6协议?
答案 0 :(得分:1)
看看:http://eniackb.blogspot.com/2009/07/how-to-disable-ipv6-in-windows-2008.html
基本上修改注册表以使用GUI。
答案 1 :(得分:1)
我尝试了示例How to disable IPv6 programmatically,但是在我的PC上不起作用。
但是,我找到了另一种无需直接编辑注册表即可解决此问题的方法。
我们有很多方法来获取NIC的名称,例如在PowerShell上执行以下命令:
Get-NetAdapter
让我们假设NIC名称为“以太网”。
要启用IPv6,请在PowerShell上执行以下命令:
enable-NetAdapterBinding-名称“以太网” -ComponentID ms_tcpip6
要禁用IPv6,请在PowerShell上执行以下命令:
disable-NetAdapterBinding-名称'Ethernet'-ComponentID ms_tcpip6
要获取NIC的所有ComponentID,请在PowerShell上执行以下命令:
Get-NetAdapterBinding-名称'Ethernet'
1。在项目中安装名为“ Microsoft.PowerShell.5.ReferenceAssemblies”的nuget程序包
2。如果要禁用IPv6,请使用以下代码
using (var powerShell = PowerShell.Create())
{
powerShell.AddScript("Disable-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6");
powerShell.Invoke();
if (powerShell.HadErrors)
{
// Failed, do something
return;
}
// Success, do something
return;
}
3。现在,我相信您已经知道如何执行其他类似的操作。
答案 2 :(得分:0)
您需要使用INetCfgBindingPath::Enable
然后使用INetCfg::Apply
方法(请参阅here)。请查看代码示例以获取详细信息:how to disable ipv6 programmatically。
据我所知nvspbind可以在指定的适配器上禁用或启用IPv6而无需重启PC。我认为nvspbind
基于INetCfg
API。