2016-09-20 7 views
0

私はIE11でテストを行っています。それを行うために私はレジストリにいくつかの変更を加えました。私はフォルダ 'FeatureControl'に新しいキー 'FEATURE_BFCACHE'を作成しました。次に、値 '0'の 'FEATURE_BFCACHE'に 'DWord'の値を 'iexplore.exe'という名前で追加しました。私はそれを手動で行った。しかし、今私のプログラムからやろうとしています。私はこれを書いたが、うまくいかない。javaを介してレジストリに新しい鍵を追加するには?

String[] c = new String[]{"reg", "add", "\"HKLM\\Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BFCACHE\"", 
       "/v", "\"iexplore.exe\"", "/t", "REG_DWORD", d", "0", "/f"}; 
try { 
    new ProcessBuilder(c).start(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

適切にコマンドラインreg add "HKLM\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE1" /t REG_DWORD /v iexplore.exe /d 0 /fに動作しますが、たぶん私は管理者として実行する必要がこのコマンドを実行するためのJavaコード

System.out.println("Creating new folder"); 
String[] c = new String[]{"reg", "add", "\"HKLM\\SOFTWARE\\WOW6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BFCACHE1\"", 
    "/t", "REG_DWORD", "/v", "iexplore.exe", "/d", "0", "/f"}; 
try { 
    new ProcessBuilder(c).start(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

からは動作しません、私はラインを持っているいくつかの変更後?

答えて

0

クォート文字列は、cmdプロンプトでコマンドを実行するか、単一の文字列として渡す場合にのみ必要です。ProcessBuilderで文字列配列を使用する場合、引用符文字は呼び出されたプログラムにリテラル引用符文字として渡されます。

試してみてください。

String[] c = new String[]{"reg", "add", "HKLM\\Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BFCACHE", 
      "/v", "iexplore.exe", "/t", "REG_DWORD", "/d", "0", "/f"}; 
+0

に動作しますレジストリを変更する – Viktoriia

+0

あなたのコマンドには '/' on '/ d'もないようです。それ以外の場合は、実行されたコマンドのstdout/stderrを出力してください(例:[inheritIO() '](http://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder)。 html#inheritIO--)をプロセスビルダに追加してください)、おそらくヒントがあります。おそらくあなたのプログラムはこの変更を行うのに十分な権利を持っていないでしょうか? – mata

+0

この行は、コマンドライン 'reg add" HKLM¥SOFTWARE¥WOW6432Node¥Microsoft¥Internet Explorer¥Main¥FeatureControl¥FEATURE_BFCACHE1 "/ t REG_DWORD/v iexplore.exe/d 0/f" で動作しますが、コードが動作しません – Viktoriia

0

それは私がコマンドラインでそれを書いても動作しません。私たちは、管理者としてコマンドラインを実行する必要があるので、私は管理者としてのIntelliJアイデアを開いた場合、それは