Джейкоб — получение информации о восстановлении системы (Java)

Мое приложение должно отображать все доступные точки восстановления (Ссылка) на компьютере с использованием java. Класс 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

Пожалуйста помоги.


person nasiroudin    schedule 19.02.2013    source источник


Ответы (1)


Здесь у нас есть сообщение, в котором говорится, что эта ошибка может быть вызвана запуском не от имени администратора.

А вот пример, когда вы получаете ту же ошибку, запрашивая псевдоним 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

Вот руководство по использованию внешнего псевдонима (из командной строки) или полного имени (из вызова WMI API).

person memnoch_proxy    schedule 30.04.2013