Не удается получить доступ к WMI, несмотря на PrincipalPermissionAttribute - PullRequest
0 голосов
/ 13 марта 2019

Основное разрешение успешно, но у меня все еще есть System.Management.ManagementException: Access denied

public class HardDriveTemp
{
    private const byte _tempAttr = 194;
    private ManagementObjectSearcher searcher;

    public HardDriveTemp()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
    }

    [PrincipalPermission(SecurityAction.Demand, Role = @"Administrator", Authenticated = false)]
    public List<string> GetDriveTemp()
    {
        var tempList = new List<string>();
        foreach (var q in searcher.Get()) //fails here
        {
            var arrVendorSpecific = (byte[])q.GetPropertyValue("VendorSpecific");
            int tempIndex = Array.IndexOf(arrVendorSpecific, _tempAttr);
            tempList.Add(arrVendorSpecific[tempIndex + 5].ToString());
        }
        return tempList;

    }

И я запускаю функцию в тесте:

    [TestMethod]
    public void GetDriveTemp()
    {
        var sut = new HardDriveTemp();
        var results = sut.GetDriveTemp();
        Console.WriteLine(string.Join("\n", results));
    }

Я пробовал с: Администратор, Администраторы, MACHINENAME\ localuser (пользователь WindowsIdentity.GetCurrent()) без успеха.Я также предоставил доступ на чтение к WMI для localuser из MMC, но это ничего не изменило.

Что можно сделать?

...