Nicht sicher, warum das nicht funktioniert, aber eine andere Möglichkeit, dies zu tun:
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();
Dadurch wird die Akkulaufzeit in eine Datei ausgegeben: C:/Windows/System32/battery-report.html
Sie können diese Seite dann kratzen. Es ist ein bisschen übertrieben, aber es könnten mehr Daten vorhanden sein, die Sie für Ihre Diagnose verwenden können.
Bearbeiten Sie auch eine powershell
Klasse in der .net-Assembly (System.Management.Automation). Sie könnten also eine .ps1 mit der Zeile machen: (Get-WmiObject win32_battery).estimatedChargeRemaining
PowerShell psinstance = PowerShell.Create(); psinstance.AddScript(scriptPath); var results = psinstance.Invoke();
Edit2: Die CIM-Klassen (Common Information Model) sind übergeordnete Klassen, auf denen die WMI-Klassen basieren. win32_xxx
Klassen überwachen und verwalten Systemhardware und -funktionen und befinden sich im CIM. Anstatt aus der CIM_Battery
übergeordneten Klasse zu ziehen, ziehen Sie win32_battery
stattdessen aus der Klasse.