Я пытаюсь получить доступ к данным winsat. У WMI есть класс для него.
Win32_WinSAT
Я пытаюсь получить последние данные, используя запрос
"SELECT * FROM Win32_WinSAT WHERE TimeTaken='MostRecentAssessment'"
Он будет отлично работать в PowerShell и даже в WMIExplorer.
Но он не работает в коде C # с использованием класса System.Management
Мой код выглядит следующим образом
class WinSatData
{
public double MemoryScore { get; set; }
public double CPUScore { get; set; }
public double D3DScore { get; set; }
public double DiskScore { get; set; }
public double GraphicsScore { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<WinSatData> winsat = new List<WinSatData>();
ManagementScope scope = new ManagementScope("\\\\localhost\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_WinSAT WHERE TimeTaken='MostRecentAssessment'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject m in collection) {
WinSatData win = new WinSatData();
win.CPUScore = (Convert.ToDouble(m["CPUScore"]));
win.MemoryScore = (Convert.ToDouble(m["MemoryScore"]));
win.D3DScore = (Convert.ToDouble(m["D3DScore"]));
win.GraphicsScore = (Convert.ToDouble(m["GraphicsScore"]));
winsat.Add(win);
}
string outout = JsonConvert.SerializeObject(winsat);
Console.WriteLine(outout);
Console.ReadKey();
}
}
Все значения в объекте управления равны нулю. Я внимательно просмотрел свойства ManagementObject m. Имя свойства верное, но значение неверное.
Вывод выглядит следующим образом:
[{"MemoryScore":0.0,"CPUScore":0.0,"D3DScore":0.0,"DiskScore":0.0,"GraphicsScore":0.0}]
Пожалуйста, помогите мне получить доступ к WinSAT.