@cicatrix
было бы большой ошибкой думать

Почему запрос WMI работает на одних машинах и бросает исключение на других?

Вот такой код имеется (см. ниже).
У всех работает нормально, у одного клиента вызывает исключение
An unhandled exception of type 'System.Management.ManagementException' occurred in System.Management.dll Additional information: Invalid namespace


Единственное отличие, что он на Windows 11 перешёл. Служба WMI на машине работает. Пытался гуглить, но никаких толковых статей на тему того, что ломается в WMI в Windows 11 не нашёл. Более того, не уверен, что вообще дело в версии винды. Есть у кого-нибудь какие-либо идеи?

public static Dictionary<string, ManagementBaseObject> EnumerateComPorts()
{
    Dictionary<string, ManagementBaseObject> result = new Dictionary<string, ManagementBaseObject>();
    string[] ports = SerialPort.GetPortNames();
    try
    {
        foreach (string port in ports)
        {
            using (var entitySearcher = new ManagementObjectSearcher(
                "root\\CIMV2", $"SELECT * FROM Win32_PnPEntity WHERE Caption LIKE '%{port}%'"))
            {
                var matchingEntity = entitySearcher.Get().Cast<ManagementBaseObject>().FirstOrDefault();
                if (null != matchingEntity)
                {
                    result.Add(port, matchingEntity);
                }
            } // using
        } // foreach
        return result;
    }
    catch(Exception ex)
    {
        Logger.LogError(ex);
    }
    return result;
} // EnumerateComPorts
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы