Ik heb mijn .java-bestand gemaakt waarmee registergegevens worden gewijzigd. Maar ik krijg de foutmelding “illegaal ontsnappingsteken” op de regel waar Runtime.getRuntime().exec
bestaat. Waar is mijn fout?
import java.util.*;
import java.applet.Applet;
import java.awt.*;
class test {
public static void main(String args[]) {
try {
Runtime.getRuntime().exec("REG ADD 'HKCU\Software\Microsoft\Internet Explorer\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F");
} catch (Exception e) {
System.out.println("Error ocured!");
}
}
}
Antwoord 1, autoriteit 100%
Je moet ontsnappen aan de backslashesdie in je pad worden gebruikt.
String windowsPath = "\\Users\\FunkyGuy\\My Documents\\Hello.txt";
Antwoord 2, autoriteit 28%
U moet \
escapen met een andere \
, dus vervang \
door \\
in uw invoerreeks .
Antwoord 3, autoriteit 17%
U moet de backslash-tekens in uw registerpadtekenreeks escapen:
"REG ADD `HKCU\\Software\\ ...
Het backslash-teken heeft een speciale betekenis in strings: het wordt gebruikt om escape-tekens te introduceren. als je het letterlijk in een string wilt gebruiken, dan moet je itescapen door een dubbele backslash te gebruiken.
Antwoord 4, autoriteit 11%
Backslashes in Java zijn speciale “escape”-tekens, ze bieden de mogelijkheid om dingen als tabbladen \t
en/of nieuwe regels \n
en tal van andere toe te voegen leuke dingen.
Onnodig te zeggen dat je ze ook moet “ontsnappen” door een \
-teken toe te voegen…
'HKCU\\Software\\Microsoft\\Internet Explorer\\Main'
Een kanttekening. Ik zou ProcessBuildergebruiken of op zijn minst , de versie van Runtime#exec
die gebruikmaakt van arrayargumenten.
Het bespaart een hoop gedoe als het gaat om het omgaan met spaties binnen opdrachtparameters, IMHO
Antwoord 5, autoriteit 6%
Waarschijnlijk omdat je niet bent ontsnapt aan de backslash in je string. Kijk eens op http://docs.oracle.com/javase/tutorial /java/data/characters.htmlvoor meer informatie over correct ontsnappen.
Antwoord 6, autoriteit 6%
je moet escape \
vervangen door \\
de onderstaande code werkt
Runtime.getRuntime().exec("REG ADD 'HKCU\\Software\\Microsoft\\Internet Explorer\\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F");