PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umgebungsvariable setzen?


Vedek Bareil
2005-01-04, 17:01:10
Hallo,

ich hab folgendes Problem. Ich soll in einem Programm (in VC++ geschrieben) den Wert einer Umgebungsvariablen ändern. Nu gibt es dazu eine Funktion _putenv, mit der man das z.B. so machen könnte:

char szNewVal[] = "Neuer Wert";
char SysCom[64];
sprintf(SysCom, "ENV_VAR=%s", szNewVal);
_putenv(SysCom);

Allerdings steht in der VC++-Doku, daß der Wert von ENV_VAR auf diese Weise nur im Rahmen des laufenden Programmes verändert wird, nach Programmende ist er wieder zurückgesetzt. Gibt es eine Möglichkeit, den Wert dauerhaft zu verändern? Geht es vielleicht mit der Funktion system()?

Ich hab natürlich auch schon ein bißchen rumprobiert, aber ohne brauchbares Ergebnis ;)

Sephiroth
2005-01-04, 18:27:12
Eine direkte Lösung hab ich nicht für dich, dafür etwas anderes (was dich vielleicht auf die richtige Idee bringt).
Das Tool setx (http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp) macht sowas. Du könntest also das Tool deinem Programm beilegen und es dann mit der neuen Env. Var als Paramter starten. setx schreibt direkt in die Registry ABER das allein reicht irgendwie nicht (hab ich schon probiert), es müsste wohl noch sowas wie ein Update der Env. Infos durchgeführt werden.