Порядок MAC-адресов изменился после обновления Windows 10 - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть программа, которая читает MAC-адрес с networkadapterconfiguration (используя MACAddress свойство )

Я читал все MAC-адреса хорошо и хорошо, нопо какой-то причине после обновления до сборки 1803 я получал смещенный mac-адрес

enter image description here

в столбце midlle - mac на версии 1709 и насамые правые столбцы, которые вы можете увидеть в macs после обновления до 1803

, есть какие-либо идеи, могу ли я убедиться, что я всегда читаю их в одном и том же порядке или каким-то образом предоставляется право читать их в определенном порядке

вот мой код

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 голосов
/ 06 декабря 2018

Вы можете легко использовать 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).Посетите репозиторий проекта для дополнительной информации.

...