在 C# 中以编程方式启用和禁用适配器的 IPv4 和 IPv6
本文关键字:适配器 IPv6 IPv4 启用 编程 方式 | 更新日期: 2023-09-27 18:36:23
是否可以使用 C# 和 .Net 库或注册表为选定的网络适配器启用/禁用 IPv4 和 IPv6 协议?
我已经尝试了示例 如何以编程方式禁用IPv6 ,但它在我的 PC 上不起作用。
但是,我找到了另一种解决问题的方法,而无需直接编辑注册表。
首先,我将向您展示如何使用PowerShell解决此问题。
我们有很多方法可以获取NIC的名称,例如在PowerShell上执行以下命令:
获取网络适配器
假设 NIC 名称为"以太网"。
若要启用 IPv6,请在 PowerShell 上执行以下命令:
enable-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6
若要禁用 IPv6,请在 PowerShell 上执行以下命令:
禁用-NetAdapterBinding -Name 'Ethernet' -ComponentID ms_tcpip6
若要获取 NIC 的所有组件 ID,请在 PowerShell 上执行以下命令:
Get-NetAdapterBinding -name 'Ethernet'
现在,我将向您展示如何使用 C# 执行此操作。
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.现在,我相信您已经知道如何执行其他类似的操作。
看看 : http://eniackb.blogspot.com/2009/07/how-to-disable-ipv6-in-windows-2008.html
基本上修改注册表以执行与使用 GUI 相同的操作。
使用INetCfgBindingPath::Enable
然后INetCfg::Apply
方法(见这里)。请查看代码示例以了解详细信息:如何以编程方式禁用 ipv6。
据我所知,nvspbind 可以在指定的适配器上禁用或启用 IPv6,而无需重新启动 PC。我认为nvspbind
是基于INetCfg
API。