Java en Windows – fout: illegaal escape-teken

Ik heb mijn .java-bestand gemaakt waarmee registergegevens worden gewijzigd. Maar ik krijg de foutmelding “illegaal ontsnappingsteken” op de regel waar Runtime.getRuntime().execbestaat. 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 \ten/of nieuwe regels \nen 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#execdie 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");

Other episodes