C# windows 10更新后更改了MAC地址顺序
我有一个读取mac地址的程序(使用MACAddress属性) 我读的所有mac地址都很好,但由于某种原因,在升级到build 1803之后,我的mac地址发生了变化 Midle列上是1709版的mac,最右边的列上是更新到1803后的mac 我能保证我总是按照同样的顺序阅读它们吗?或者我可以按照特定的顺序阅读它们吗 这是我的密码C# windows 10更新后更改了MAC地址顺序,c#,.net,wmi,mac-address,C#,.net,Wmi,Mac Address,我有一个读取mac地址的程序(使用MACAddress属性) 我读的所有mac地址都很好,但由于某种原因,在升级到build 1803之后,我的mac地址发生了变化 Midle列上是1709版的mac,最右边的列上是更新到1803后的mac 我能保证我总是按照同样的顺序阅读它们吗?或者我可以按照特定的顺序阅读它们吗 这是我的密码 public static List<string> WMISearcher(string WMIClassName, string searchPar
public static List<string> WMISearcher(string WMIClassName, string
searchParams, bool win32_Prefix = true, string rootNamespace = "")
{
List<string> result = new List<string>();
var searcherData = getSearcherData(WMIClassName, searchParams, win32_Prefix, rootNamespace);
foreach (ManagementObject obj in searcherData)
{
foreach (PropertyData data in obj.Properties)
if (data.Value != null)
result.Add(data.Value.ToString());
}
return result;
}
private static ManagementObjectCollection getSearcherData(string WMIClassName, string searchParams, bool win32_Prefix = true, string rootNamespace = "")
{
string prefix = "Win32_";
string rootPrefix = @"root\";
if (!win32_Prefix)
prefix = String.Empty;
if (!String.IsNullOrEmpty(rootNamespace))
rootNamespace = rootPrefix + rootNamespace;
else
rootNamespace = rootPrefix + "cimv2";
string searchQuery = String.Format("SELECT {0} FROM {1}", searchParams, prefix + WMIClassName);
using (ManagementObjectSearcher searcher =
new ManagementObjectSearcher(rootNamespace, searchQuery))
{
// Console.WriteLine("{0}", WMIName);
return searcher.Get();
}
}
您可以根据需要轻松使用和排序列表:
惰性选项:
var adapters = helper.Query("SELECT * FROM Win32_NetworkAdapterConfiguration").ToList();
强类型选项:
1) 声明您的模型(这是一个示例,您可以添加或删除所需的任何属性):
2) 查询和订购人:
List<NetworkAdapterConfiguration> interfaces = helper.Query<NetworkAdapterConfiguration>().OrderBy(n=>n.Description).ToList();
List interfaces=helper.Query().OrderBy(n=>n.Description.ToList();
这样,您就有了一个列表,您可以根据需要进行排序(在本例中为
Description
)。请访问项目存储库以获取更多参考。是否可以对列表进行排序?您有不同的适配器集。我假设其中一些是虚拟的。可能是重新创建的?@Steve是的,我有适配器(其中3个),我不知道(或者更确切地说,不知道如何检查)是否有这些适配器recreated@JLe我将检查MAC是否是来自PING(ARP请求)的响应,并且响应的时间并不总是相同的。要始终获得相同的顺序,您需要进行排序。它与“手动”调用WMI并对其进行排序有何不同?@styx首先,您编写的代码要少得多。他们让你和他们一起工作。更好、更干净、更简单的IMHO。
[WMIClass("Win32_NetworkAdapterConfiguration")]
public class NetworkAdapterConfiguration
{
public string Caption { get; set; }
public string Description { get; set; }
public uint IPConnectionMetric { get; set; }
public UInt32 InterfaceIndex { get; set; }
public string WINSScopeID { get; set; }
}
List<NetworkAdapterConfiguration> interfaces = helper.Query<NetworkAdapterConfiguration>().OrderBy(n=>n.Description).ToList();