在 C# 中以编程方式启用和禁用适配器的 IPv4 和 IPv6
Enable and Disable IPv4 and IPv6 of an adapter programmatically in C#
是否可以使用 C# 和 .Net 库或注册表 Enable/Disable 选定网络适配器的 IPv4 和 IPv6 协议?
看看:http://eniackb.blogspot.com/2009/07/how-to-disable-ipv6-in-windows-2008.html
基本上修改注册表以执行与使用 GUI 相同的操作。
您需要使用 INetCfgBindingPath::Enable
然后 INetCfg::Apply
方法(参见 here). Please look into code example for details: how to disable ipv6 programmatically。
据我所知,nvspbind 可以在指定适配器上禁用或启用 IPv6 而无需重新启动 PC。而且我认为 nvspbind
是基于 INetCfg
API.
我试过示例 How to disable IPv6 programmatically ,但它在我的电脑上不起作用。
但是,我找到了另一种无需直接编辑注册表即可解决问题的方法。
首先,我将向您展示如何使用 PowerShell 解决此问题。
我们有很多方法可以获取网卡的名称,例如在PowerShell上执行如下命令:
Get-NetAdapter
假设网卡名称是"Ethernet".
要启用 IPv6,请在 PowerShell 上执行以下命令:
enable-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6
要禁用 IPv6,请在 PowerShell 上执行以下命令:
disable-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6
要获取网卡的所有ComponentID,在PowerShell上执行以下命令:
Get-NetAdapterBinding -name 'Ethernet'
现在,我将向您展示如何使用 C# 执行此操作。
1.Install 将 "Microsoft.PowerShell.5.ReferenceAssemblies" 命名为您的项目的 nuget 包
2.If你想禁用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.Now,我相信你已经知道如何进行其他类似的操作了。
是否可以使用 C# 和 .Net 库或注册表 Enable/Disable 选定网络适配器的 IPv4 和 IPv6 协议?
看看:http://eniackb.blogspot.com/2009/07/how-to-disable-ipv6-in-windows-2008.html
基本上修改注册表以执行与使用 GUI 相同的操作。
您需要使用 INetCfgBindingPath::Enable
然后 INetCfg::Apply
方法(参见 here). Please look into code example for details: how to disable ipv6 programmatically。
据我所知,nvspbind 可以在指定适配器上禁用或启用 IPv6 而无需重新启动 PC。而且我认为 nvspbind
是基于 INetCfg
API.
我试过示例 How to disable IPv6 programmatically ,但它在我的电脑上不起作用。
但是,我找到了另一种无需直接编辑注册表即可解决问题的方法。
首先,我将向您展示如何使用 PowerShell 解决此问题。
我们有很多方法可以获取网卡的名称,例如在PowerShell上执行如下命令:
Get-NetAdapter
假设网卡名称是"Ethernet".
要启用 IPv6,请在 PowerShell 上执行以下命令:
enable-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6
要禁用 IPv6,请在 PowerShell 上执行以下命令:
disable-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6
要获取网卡的所有ComponentID,在PowerShell上执行以下命令:
Get-NetAdapterBinding -name 'Ethernet'
现在,我将向您展示如何使用 C# 执行此操作。
1.Install 将 "Microsoft.PowerShell.5.ReferenceAssemblies" 命名为您的项目的 nuget 包
2.If你想禁用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.Now,我相信你已经知道如何进行其他类似的操作了。