Problembeschreibung: Es gibt etliche verschiedene Möglichkeiten, via Script oder Programm Umgebungsvariablen zu setzen. Lösungen auf Batch -, cpp -, php - oder Java-ebene haben alle das Problem, dass die Variable entweder erst nach einem Neustart des Systems vorhanden/ nutzbar sind, oder sich nur auf den aktuelle (cmd-) und ihre Kindeprozesse(?) beziehen.
Meine gefundenen aber unbefriedigenden Lösungsansätze wären:
1. auf unterschiedlichen Wegen script/programmgesteuert direkt in der Registry setzen. -> (erfordert Neustart, um verfügbar zu sein, danach erwünschtes Ergebnis).
z.B. system ("reg add ...", ... );
2. system(" set MyVar=Wertxxy"...); -> nur temporär in diesem Prozess verfügbar, jedoch nicht dauerhaft und nicht z.B. in anderer neu eröffneter Konsole) ;
ebenso cpp:
|
PHP-Quelltext
|
1
|
SetEnvironmentVariable(LPCTSTR lpName, LPCTSTR lpValue);
|
3. system("SETX MyVar=irgendwas", ...); --> ungünstig, da zusätzliches Tool von MS heruntergeladen werden muß
Kennt jemand eine sinnvolle Lösung, für das Problem, eine Umgebungsvariable dauerhaft via Script/ Programm zu setzen, welche jedoch auch sofort (ohne Neustart) im gesamten System verfügbar ist, ohne SETX verwenden zu müssen? Wie machen das andere Programme/ Installer?
Gibt es irgendeine (WIN-API) c-Funktion, mit der das erneute Einlesen der Registry oder Teilen davon erzwungen werden kann?
Ich möchte den php - switch des xampp etwas erweitern und das komfortable umschalten zwischen mehreren php- Versionen ermöglichen. Die jeweils eingestellte PHP_Version soll jedoch zusätzlich auch über die Kommandozeile verfügbar sein. Dazu müßte u.a. die PATH-Variable verändert werden.
Es soll nicht notwendig sein, zusätzliche tools herunterladen zu müssen (z.B. SETX von MS). Also bitte nicht vorschlagen, SETX zu verwenden)
Die Variante sollte mind. unter Win XP laufen.
EDIT: closed --> Lösung:
http://support.microsoft.com/kb/104011/en-us/
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ospx« (6. Oktober 2008, 21:00)