Не уверен, почему это не работает, но другой способ сделать это:
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 (System.Management.Automation). Таким образом, вы можете сделать .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
родительского класса, win32_battery
вместо этого вытащите из класса.