Jacob - 检索系统还原信息(Java)

时间:2013-02-19 18:27:32

标签: java jacob

我的应用程序需要在使用java的计算机上列出所有可用的还原点(Link)。 SystemRestore类位于默认名称空间中,而不是在CIMV2中。当我尝试以下代码时:

public class TestWMI {
    public static void main(String args[]){
        String host = "localhost";
        String connectStr = String.format("winmgmts:\\\\%s\\root\\default", host);
        String query = "SELECT * FROM SystemRestore";
        ActiveXComponent axWMI = new ActiveXComponent(connectStr);

        Variant vCollection = axWMI.invoke("ExecQuery", new Variant(query));


        EnumVariant enumVariant = new EnumVariant(vCollection.toDispatch());
        Dispatch item = null;
        while (enumVariant.hasMoreElements()) {
            item = enumVariant.nextElement().toDispatch();

            String serviceName = Dispatch.call(item,"Description").toString();
            System.out.println();

        }
    }    
} 

但最终会出现以下错误:

Exception in thread "main" com.jacob.com.ComFailException: IEnumVARIANT::Next
    at com.jacob.com.EnumVariant.Next(Native Method)
    at com.jacob.com.EnumVariant.hasMoreElements(EnumVariant.java:68)
    at TestWMI.main(TestWMI.java:28)
Java Result: 1

请帮忙。

1 个答案:

答案 0 :(得分:0)

我们有一篇帖子说this error can be caused没有以管理员身份运行。

这是一个示例,通过查询外部数据WMI别名来获得相同的错误,但在使用select时应该查询全名。

SELECT Index,InterfaceIndex,SettingID,IpAddress,ServiceName,Description
FROM NICCONFIG
WHERE IPEnabled=true

应该是:

SELECT Index,InterfaceIndex,SettingID,IpAddress,ServiceName,Description
FROM Win32_NetworkAdapterConfiguration
WHERE IPEnabled=true

这是guide for using外部别名(来自命令行)或全名(来自WMI API调用)。