Umgebungsvariable setzen
-
Hi,
Ich habe versucht unter WindowsXP, mit folgender Methode die Umgebungsvariable "variable"
zu setzen - jedoch ohne Erfolg. Weiß jemand, wie ich mit Java eine Umgebungsvariable setzen kann?public static void main(String[] args) { Runtime r = Runtime.getRuntime(); try { r.exec("cmd.exe /c set variable=test"); } catch (IOException e) { System.out.println("Fehler"); } }
-
ich glaub das geht über die registry
-
Prinzipiell kannst du so eine Umgebungsvariable setzen. Leider ist die aber nur für die aktuelle Session gültig, dass heisst für das CMD.EXE, dass du aufrufst. Wenn Du die Permanent setzen willst musst du, wie schon gesagt, über die Registry gehen.
Die stehen dann (bei XP Professional) unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Session Manager\Environment/Dirk
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
-
Ähm, sorry Leute, aber es kann ja wohl unmöglich sein, dass ich für das setzen einer simplen Umgebungsvariable die Registry editieren muss !
Wie soll das dann unter Unix gehen?
Da muss es eine einfachere Methode über einen Konsolenaufruf geben.
Zur Not mach ich es über JNI - aber über die Registry auf keinen Fall (Zumal die Änderungen nicht sofort übernommen werden...)
-
aber über die Registry auf keinen Fall
Geht aber (leider?) nur über die Registry. Dann hast du wohl Pech gehabt und wirst es nie hinkriegen. :p :p
-
Leider ist das bei Windows ein Zugriff auf das System. Wenn du keine Lust hast, die Registry zu hacken, kannst du auch über Runtime.exec() das Windows Tool regedit mit einem Dateinamen als Argument aufrufen.
z.B.
regedit test.reg
Die Datei test.reg beinhaltet dann z.B. folgendes:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] "Test"="Das ist ein Demo-Wert"
Wenn du die Messageboxen vermeiden willst, musst du die Option /s vor test.reg angeben.
/Dirk
-
Ok, ich hab das jetzt mit der *.reg probiert, und es hat funktioniert (Musste nur "REGEDIT4" über die 2 anderen Anweisungen schreiben).
Das Problem ist nur, dass diese Variablen danach zwar in der Registry stehen, sie jedoch erst nach einen Neustart zur Verfügung stehen... Kann man da irgendwas machen, dass die gesetzten Umg.Variablen sofort nach dem Eintragen in der Registry per "set" abrufbar sind?PS: Hab versucht die Registry per "c:\windows\system32\rundll32.exe shell32,SHExitWindowsEx" neuzuladen -> gab jedoch nur eine Fehlermeldung.