2014-08-21 2 views
1

Я пытаюсь добавить регистр ключей в окнах, используя ProcessBuilder. Прежде чем я попытался Runtime.getRuntime.exec() и не работает также.ProcessBuilder не работает?

Я пробую это.

ProcessBuilder p = new ProcessBuilder("reg add HKCU\\Software\\Microsoft\\Windows /v mykey /t REG_SZ /d " + "key_value"); 
     try { 
      p.start(); 
     } catch (IOException ex) { 
      Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex); 
     } 

Исключение:

GRAVE: null 
java.io.IOException: Cannot run program "reg add HKCU\Software\Microsoft\Windows /v mykey /t REG_SZ /d key_value": CreateProcess error=2, O sistema não pode encontrar o arquivo especificado 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) 
    at br.com.iguana.keys.Registro.addChavesRegistro(Registro.java:50) 
    at br.com.iguana.keys.Registro.main(Registro.java:158) 
Caused by: java.io.IOException: CreateProcess error=2, O sistema não pode encontrar o arquivo especificado 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:137) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) 
    ... 2 more 

Любая идея?

+0

Действительно ли 'reg' доступен как исполняемый файл на вашем пути, в отличие от встроенной оболочки? – hexafraction

+0

yep, В cmd я использую 'reg' и работает. Я попытался передать '\\ Windows \\ System32' тоже и ничего – FernandoPaiva

+1

Да, но выполняет ли' reg.exe' как исполняемый файл? – hexafraction

ответ

0

@ Джаррод Роберсон прав. Вы должны использовать:

Process p = Runtime.getRuntime().exec("reg add HKCU\\Software\\Microsoft\\Windows /v mykey /t REG_SZ /d " + "key_value"); 
+0

yep, сделал работы, но теперь остановился работать, и я не знаю, почему! – FernandoPaiva

+0

Если я использую: 'Runtime.getRuntime.exec()' без 'Process' работает, но создайте' reg.exe' на мониторе задач и не закрывает эту задачу. – FernandoPaiva

+1

Я не уверен, но назову: 'p.destroy()' должен остановить reg.exe – CtrlAltDel