我有一些简单的代码:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("select * from Win32_UninterruptiblePowerSupply");
ManagementObjectCollection items = searcher.Get();
foreach (ManagementObject item in items)
{
// Some code here...
}
“items”对象是半空的。它实际上是一个对象,但是对.Count或其他任何东西的调用都会引发异常。
我确实有一个符合USB标准的标准UPS连接,这是Windows 7,我在64位计算机上使用Visual Studio 2010。我确实添加了一个清单和requireAdministrator。
其他WMI类可以工作,但是这个没有。我没有想法 - 帮助!
答案 0 :(得分:2)
从Win32_UninterruptiblePowerSupply的MSDN文档中可以看出:
从Windows Vista开始,这个 class已过时且无法使用 因为不再提供UPS服务 可用。这项服务与之合作 串行连接的UPS设备,而不是USB 设备
答案 1 :(得分:1)
尝试CIM_UninterruptiblePowerSupply:
'UPS可用性(WMI)
Private Function UPSavailability() As String
Dim s As String = ""
UPSavailability = s
Try
Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM CIM_UninterruptiblePowerSupply")
For Each queryObj As ManagementObject In searcher.Get()
s = queryObj("Availability")
Next
Return s
Catch err As ManagementException
MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
End Try
End Function