为什么我不能让Win32_UninterruptiblePowerSupply工作?

时间:2010-06-24 04:39:27

标签: c# visual-studio-2010 wmi

我有一些简单的代码:

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类可以工作,但是这个没有。我没有想法 - 帮助!

2 个答案:

答案 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