Основное разрешение успешно, но у меня все еще есть 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, но это ничего не изменило.
Что можно сделать?