SetEnvironmentVariable() scheint nicht zu funktionieren

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
wolle212
Beiträge: 31
Registriert: 23.04.2005 21:39
Wohnort: Leipzig
Kontaktdaten:

SetEnvironmentVariable() scheint nicht zu funktionieren

Beitrag von wolle212 »

Hallo Leute,

ich bin dabei mir ein kleines Programm zu proggen, was meine Windows-PATH-Systemvariable erweitern soll. Das Auslesen mittels

Code: Alles auswählen

GetEnviromentVariable("PATH")
klappt, allerdings zeigt das Ausführen von

Code: Alles auswählen

SetEnvironmentVariable("PATH";neuerPfade.s)
kein sichtbares Resultat -- die PATH-Variable bleibt, wie sie ist.

Ist das nun ein Bug in PureBasic oder wende ich die Funktion falsch an (von wegen Umgebungsblock)? Bin für jede hilfreiche Antwort dankbar :)
Es gibt 10 Arten von Menschen: Jene, die das Binärsystem verstehen und jene, bei denen das nicht der Fall ist.

PB_4.20
WinXP_Pro_x32_SP3
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Die Funktion ändert die Variable nur für dein Programm und alle anderne
Prozesse, die mit RunProgramm gestartet werden. Beachte die Form ->
Zukunft, wenn ich mich jetzt nicht vertue, "erben" die RunProgram()
programme die gesetzten Variablen, aber sie können dann nicht mehr zur
lauft zeit der "Client-Programme" geändert werden.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

also bei dem code aus deinem post hast du die schift-taste ein zeichen zu lang gehalten :D :

Variable("PATH";neuerPfade.s)

..aber das wird es ja wohl nicht sein, hätte der compiler ja was gesagt.
hast du darauf geachtet, dass es ein benutzter- und eine system-variante von PATH gibt? ich glaub PB ändert nur die benutzer-var, aber ich weiß nicht, wo genau der unterschied zwischen denen liegt.

<edit>
also
GetEnvironmentVariable("path")
gibt mir die summe aus der user- und der sys-variablen. wenn ich sie z.b. mit
SetEnvironmentVariable("path",GetEnvironmentVariable("path")+";C:\test\")
erweitere, dann erhalte ich mit
GetEnvironmentVariable("path")
auch die erweiterte version. unter windows selbst (außerhalb des programms) verändert sich nichts. nicht nach und nicht wärend des programms.

wenn du globale änderungen vornehmen willst, kannst du das bestimmt mit RunProgramm(..) in verbindung mit dem windows SET command machen.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

wenn der Systempfad dauerhaft geändert werden soll, muss das in der Registry erfolgen:

HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Benutzeravatar
wolle212
Beiträge: 31
Registriert: 23.04.2005 21:39
Wohnort: Leipzig
Kontaktdaten:

Danke!

Beitrag von wolle212 »

OK - sowas habe ich mir schon gedacht.
Ich werde das mal angehen. Vielen Dank :allright:
Es gibt 10 Arten von Menschen: Jene, die das Binärsystem verstehen und jene, bei denen das nicht der Fall ist.

PB_4.20
WinXP_Pro_x32_SP3
Gesperrt