我正在尝试创建一个 C# 应用程序来记录一段时间内的电池百分比,为此我一直在尝试使用 .NET WMI API。我在 MSDN 上查找,发现有一个名为的 WMI 类CIM_Battery
,并证实了它的存在wbemtest.exe
。
经过仔细检查wbemtest.exe
,我发现该类CIM_Battery
没有任何我可以读取的实例。
这是正常现象吗,还是我的系统坏了?
答案1
不确定为什么这不起作用,但有另一种方法可以做到:
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();
编辑 2:CIM(通用信息模型)类是 WMI 类所基于的父类。win32_xxx
类监视和管理系统硬件和功能,位于 CIM 中。不要从CIM_Battery
父类中提取,win32_battery
而是从类中提取。