有没有办法获取C#中禁用/启用的网络接口的列表

时间:2019-02-01 19:19:08

标签: c# network-programming network-interface

我编程一点脚本来改变一个特定Wireless80211或以太网网络接口的IPv4地址。到目前为止,一切正常。该脚本使用命令提示符和netsh设置IPv4(要使用C#控制它,我使用System.Diagnostics)。 我要添加此功能,该脚本禁用或启用所有“ Wireless80211”和“以太网”接口(没有特定接口),您可以在“控制面板>网络和Internet>网络连接”中找到。

该脚本主要用于ARTNET到DMX自动做好一切准备使用ARTNET(人,不知道在控制面板的东西和自动化工作流程)。 我已经使用System.Net.NetworkInformation命名空间进行了尝试,但是我只找到了一种获取启用的网络接口的方法。当我禁用接口System.Net.NetworkInformation不显示此界面。

2 个答案:

答案 0 :(得分:1)

我不知道NetworkInterface.GetAllNetworkInterfaces()没有返回禁用的接口。

无论如何,您可以尝试通过.NET框架中可用的System.Management.dll使用WMI api(必须将此引用添加到您的项目中),我进行了测试,它允许您即使在禁用网络的情况下也可以进行交互接口。

以下示例为您提供了如何通过此api使用WMI的想法,我几乎从文档中提取了它:

using System;
using System.Management;
...
void ListNetworkAdapters()
{
    var query = new ObjectQuery("SELECT * FROM Win32_NetworkAdapter");

    using (var searcher = new ManagementObjectSearcher(query))
    {
        var queryCollection = searcher.Get();

        foreach (var m in queryCollection)
        {
            Console.WriteLine("ServiceName : {0}", m["Name"]);
            Console.WriteLine("MACAddress : {0}", m["Description"]);
            Console.WriteLine();
        }

        Console.ReadLine();
    }
}

可以在这里找到文档: https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-networkadapter

答案 1 :(得分:0)

NetworkInterface.GetAllNetworkInterfaces()

然后检查OperationalStatus属性

https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.networkinterface?view=netframework-4.7.2