有没有办法在 C# 中获取 disabled/enabled 网络接口的列表
Is there a way to get a list of disabled/enabled network interfaces in C#
我正在编写一个小脚本来更改特定 Wireless80211 或以太网网络接口的 IPv4 地址。到目前为止一切正常。该脚本使用命令提示符和 netsh 设置 IPv4(为了使用 C# 控制它,我使用 System.Diagnostics
)。
我想添加功能,该脚本禁用或启用所有 Wireless80211 和以太网网络接口(没有特定接口),您可以在 "Control Panel>Network and Internet>Network Connections".
该脚本主要用于ArtNet到DMX自动准备使用ArtNet的一切(对于那些对控制面板一无所知的人和自动化工作流程)。
我已经用 System.Net.NetworkInformation
命名空间试过了,但我只找到了一种方法来获得启用的网络接口。一旦我禁用一个界面 System.Net.NetworkInformation
就不会显示这个界面。
NetworkInterface.GetAllNetworkInterfaces()
然后检查 OperationalStatus 属性
我不知道 NetworkInterface.GetAllNetworkInterfaces() 没有 return 禁用接口。
无论如何,您可以尝试通过 .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