Я использую WMI, мне нужно получить некоторую информацию, но когда класс недоступен из-за недостаточных разрешений, все зависает на несколько (~ 5) секунд.Даже установка низкого тайм-аута не работает (не говоря уже о том, что это глупое решение).
Проблема не в недостаточных разрешениях, проблема "зависает".
Есть ли способпроверить, есть ли у текущего процесса привилегии на чтение информации из некоторого класса, чтобы предотвратить исключение «зависание» и «отказ в доступе»?
ConnectionOptions co = new ConnectionOptions();
co.Impersonation = ImpersonationLevel.Impersonate;
co.Authentication = AuthenticationLevel.Packet;
co.Timeout = new TimeSpan(0, 0, 1); // 1 second, but still hangs for ~5
co.EnablePrivileges = false; // false or true, doesn't matter
ManagementPath mp = new ManagementPath();
mp.NamespacePath = @"root\CIMV2\Security\MicrosoftTpm";
mp.Server = "";
ManagementScope ms = new ManagementScope(mp, co);
ms.Connect(); // Hangs for ~5 seconds and throws "access denied"