Не уверен, почему это не работает, но другой способ сделать это:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C powercfg /batteryreport";
process.StartInfo = startInfo;
process.Start();
Это выведет время автономной работы в файл: C:/Windows/System32/battery-report.html
Затем вы можете очистить эту страницу. Это немного излишне, но там может быть больше данных, которые вы можете использовать для диагностики.
Изменить: также класс powershell
в .net (Система.Управление.Автоматизация) сборка. Таким образом, вы можете сделать .ps1 со строкой: (Get-WmiObject win32_battery).estimatedChargeRemaining
PowerShell psinstance = PowerShell.Create();
psinstance.AddScript(scriptPath);
var results = psinstance.Invoke();
Edit2: классы CIM (общая информационная модель) являются родительскими классами, на которых построены классы WMI. win32_xxx
отслеживают и управляют системным оборудованием и функциями и находятся в CIM. Вместо того, чтобы CIM_Battery
из родительского класса CIM_Battery, вместо этого извлекайте из класса win32_battery
.