/ / Prečo ManagementObjectSearcher.Get () hodiť UnauthorizedAccessException? - .net, wmi

Prečo ManagementObjectSearcher.Get () hodí UnauthorizedAccessException? - .net, wmi

Vyvíjam desktopovú aplikáciu .Net 4.6.1, ktorá používa nasledujúci kód na určenie názvu systému priateľského k človeku na účely protokolovania (ako je uvedené v článku túto odpoveď).

public static string GetOSFriendlyName()
{
string result = string.Empty;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
foreach (ManagementObject os in searcher.Get())
{
result = os["Caption"].ToString();
break;
}
return result;
}

Avšak, ja dostávam chybové hlásenia od niektorých mojich používateľov, čo to naznačuje ManagementObjectSearcher.Get() je hádzať UnauthorizedAccessException:

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at System.Management.ThreadDispatch.Start()
at System.Management.ManagementScope.Initialize()
at System.Management.ManagementObjectSearcher.Initialize()
at System.Management.ManagementObjectSearcher.Get()
[my code]

Viem o ničom inom o WMI (jednoduchoskopírovaný kód z vyššie uvedenej odpovede SO), a tak nemám potuchy, čo by mohlo spôsobiť, že táto výnimka bude hodená, a ja som nebol schopný reprodukovať túto výnimku sám. WMI na diaľku, čo som "nie je (nemyslím si!) Robiť."

Čo môže spôsobiť, že táto výnimka bude vyvolaná pre niektorých používateľov, ale nie pre iných?

odpovede:

0 pre odpoveď č. 1

Uistite sa, že používatelia majú správne zoznamy ACL, pretože niektoré dotazy služby WMI vyžadujú na spustenie zvýšené práva.