Мое приложение на .net core 5 завершает работу с ошибкой при попытке получить идентификатор оборудования на Windows 7

Я разрабатываю приложение на .net core 5 для использования в Windows 10, но появилась необходимость добавить поддержку Windows 7 и я столкнулся с проблемой. Приложение работает нормально, но при попытке получить идентификатор оборудования возникает ошибка:

Application: MyApp.exe
CoreCLR Version: 5.0.1321.56516
.NET Version: 5.0.13
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitializationException: The type initializer for 'System.Management.WmiNetUtilsHelper' threw an exception.
 ---> System.ComponentModel.Win32Exception (126): Failed to load required native library 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\wminet_utils.dll'.
   at System.Management.WmiNetUtilsHelper..cctor()
   --- End of inner exception stack trace ---
   at System.Management.MTAHelper.IsNoContextMTA()
   at System.Management.MTAHelper.CreateInMTA(Type type)
   at System.Management.ManagementPath.CreateWbemPath(String path)
   ...

Код:

ManagementObjectSearcher mbs = new("Select ProcessorId From Win32_processor"); // <- Ошибка
ManagementObjectCollection mbsList = mbs.Get();

foreach (ManagementObject mo in mbsList)
{
   id += mo["ProcessorId"].ToString();
}

Я установил следующие пакеты обновлений, но это не решило проблему:

KB4457144
KB2999226
KB3063858

.net framework 4.0 тоже установлен


Ответы (2 шт):

Автор решения: Андрей Адаменко

Необходимо было установить .NET Framework 4.7.2 Спасибо EvgeniyZ

→ Ссылка
Автор решения: Stepagrus

Чтобы использовать WMI и не зависеть от .NET Framework и иметь возможность собирать ваш проект self-contained, попробуйте эту библиотеку https://github.com/MartinKuschnik/WmiLight https://www.nuget.org/packages/WmiLight/

Автор её специально написал из соображений производительности:

У реализации .Net framework есть одна большая проблема. При каждой удаленной операции происходит небольшая утечка памяти. Используйте эту структуру, если ваше приложение является службой или работает долго, и вы отправляете много удаленных запросов.

Но нам (мне) она пригодится, чтобы избавиться от зависимости на .NET Framework.

→ Ссылка