Windows 10更新后MAC地址顺序已更改

时间:2018-12-06 15:11:42

标签: c# .net wmi mac-address

我有一个程序,可以使用networkadapterconfiguration(使用 MACAddress属性)读取mac地址

我很好地阅读了所有的mac地址,但是由于更新到内部版本1803之后,由于某种原因,我的mac地址被转移了

enter image description here

在midlle列上是版本1709上的mac,在最右边的列上,您可以在更新到1803之后看到macs

任何想法都可以确保我始终以相同的顺序阅读它们,或者以某种方式准予阅读它们

这是我的代码

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 MACAddressResult = WMIUtils.WMISearcher("NetworkAdapterConfiguration", "MACAddress");

1 个答案:

答案 0 :(得分:0)

您可以轻松使用ORMi并根据需要对列表进行排序:

懒惰选项:

var adapters = helper.Query("SELECT * FROM Win32_NetworkAdapterConfiguration").ToList();

强类型选项:

1)声明模型(这是一个示例,您可以添加或删除所需的任何属性):

[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; }
}

2)查询和排序依据:

List<NetworkAdapterConfiguration> interfaces = helper.Query<NetworkAdapterConfiguration>().OrderBy(n=>n.Description).ToList();

这样,您就可以根据自己的需要对列表进行排序(在本例中为Description)。访问项目存储库以获取更多参考。