2014-03-06 4 views
1
try { 
    final String REG_ADD_CMD ="cmd /c reg add \"HKEY_LOCAL_MACHINE\\SOFTWARE\\"+ 
           "Microsoft\\Windows\\CurrentVersion\\WindowsUpdate"+ 
           "\\Auto Update\" /v AUOptions /t REG_DWORD /d 1 /f"; 
    Process objProcess; 
    //objProcess cmd /c = Runtime.getRuntime().exec(new String[] 
    //{"REG ADD \"", " HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows 
    //\\CurrentVersion\\WindowsUpdate\\Auto Update"," /v AUOptions /t REG_DWORD /d 1 /f"}); 

    objProcess = Runtime.getRuntime().exec(REG_ADD_CMD); 
    System.out.println("REG_ADD_CMD:::"+REG_ADD_CMD); 
    BufferedReader reader=new BufferedReader(new InputStreamReader(objProcess.getInputStream())); 
    String line=reader.readLine(); 
    System.out.println("Windows auto update::::"+line); 
    final int exitStatus = objProcess.waitFor(); 
    int exitVal = objProcess.exitValue(); 
    System.out.println("exitStatus::::"+exitStatus); 
    System.out.println("exitVal::::"+exitVal); 
    //System.out.println("Processed finished with status: " + exitVal); 

    if(exitStatus != 0){ 
     System.err.println("Error while installing application!!"); 
    } 
     //objProcess = Runtime.getRuntime().exec("reg add "HKEY_LOCAL_MACHINE\SOFTWARE\"+ 
//       "Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 1 /f"); 
} 
    catch (InterruptedException ex) { 
     ex.printStackTrace(); 
    } 
    catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Это мой код для автоматического изменения окна в Windows 7. После того, как я выполнил запрос, как «Операция завершена успешно» на моей консоли, но ее не отражается на панели управления можно какой-нибудь помощь относительно этого. БлагодаряОтключить автоматическое обновление Windows с помощью Java

+1

О, мой длинный титул! – Incognito

+0

Чтобы отключить автоматическое обновление Windows в Windows 7 с помощью java – user2563648

+0

^Теперь это более интересное название :) – Incognito

ответ

0

Вы бы лучше использовать ProcessBuilder или, по крайней мере, Runtime.exec, который принимает String[], а не одну строку, так как одной строки Exec почти наверняка не расщепляется слова так, как вы хотите его ,

Вам не нужно добавлять дополнительные кавычки вокруг аргументов, содержащих пробелы.

+0

Я думаю, что проблема, скорее всего, будет кэшировать значения реестра. Вызов команды «reg» более элегантно не решит этого. –

+0

Я пробовал код. Получив «Операция завершена успешно» в console.but, она не отражается на панели управления. Предположим, что вы можете попасть в панель управления. – user2563648

2

Я думаю, что вы ошибаетесь. Действительно, в Windows хранится много информации о конфигурации в реестре. Это не означает, однако, что компонент, который хранит эту информацию и читает ее при запуске, выполняет опрос по значению реестра, чтобы узнать, изменил ли кто-то другой значение.

Это то, что происходит в вашем случае. Существует компонент, который отвечает за автоматические обновления. Он запускается при запуске системы и считывает ее конфигурацию из реестра. Затем вы изменяете значение реестра, но этот компонент ничего не знает об этом.

Для правильной работы этой операции вы должны найти API, который сделает это и назовите его. К счастью, кто-то уже реализовал утилиту командной строки, которая выполняет эту задачу: http://www.intelliadmin.com/index.php/2012/10/manage-automatic-updates-from-the-command-line/

Взгляните на эту статью. Запустите утилиту из java и, надеюсь, она сработает для вас. Я уверен, что есть другие решения, которые делают что-то подобное. Например, посмотрите на WMI. Если вы найдете WMI API, который это делает, вы можете написать JScript или VBScript, а затем запустить его из java с помощью интерпретатора cscript.

+0

может у вас более конкретный. Потому что я не очень хорош в java .. – user2563648

+0

Что конкретно не ясно? – AlexR

+0

расскажите, как запустить утилиту из java? – user2563648

Смежные вопросы