在 C# 中以编程方式启用和禁用适配器的 IPv4 和 IPv6

本文关键字:适配器 IPv6 IPv4 启用 编程 方式 | 更新日期: 2023-09-27 18:36:23

是否可以使用 C# 和 .Net 库或注册表为选定的网络适配器启用/禁用 IPv4 和 IPv6 协议?

在 C# 中以编程方式启用和禁用适配器的 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。