2016-05-13 1 views
1

次のコードを使用してロギング目的で人間に優しいOS名を判断する.Net 4.6.1デスクトップアプリケーションを開発中です(this answerで示唆)。なぜManagementObjectSearcher.Get()はUnauthorizedAccessExceptionをスローしますか?

しかし、私は ManagementObjectSearcher.Get()UnauthorizedAccessExceptionを投げていることを示す私のユーザーの一部からのエラーレポートを取得しています
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; 
} 

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] 

私は(単に外のコードをコピーした次のWMIについて何を知っています上記のSO答え)、と私はその例外がスローされる原因になるかもしれないと私は考えていない、私は例外を自分自身を再現することはできませんでした。グーグルでは、リモートでWMIに接続しようとしている人の検索結果しか表示されませんでしたが、私はそうではありません。

一部のユーザーでこの例外がスローされる可能性がありますが、

答えて

0

一部のWMIクエリで実行する権限を昇格する必要があるため、ユーザーのACLが正しいことを確認してください。

関連する問題