[Gelöst!] Registry Wert hinzufügen statt neu setzen

Antworten
proland
Beiträge: 40
Registriert: 09 Dez 2013, 10:36

[Gelöst!] Registry Wert hinzufügen statt neu setzen

Beitrag von proland »

Hi Leute,

Ich bin mittlerweile verzweifelt und suche deshalb mal wieder hier Hilfe.
Wie schon im Header beschrieben geht es darum, einer Registryvariable

Code: Alles auswählen

[Registry_Patch_Variable]
openkey [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
set "Path" = REG_EXPAND_SZ:"C:\\Program Files (x86)\\CMake 2.8\\bin;"
einen Wert hinzuzufügen statt ihn komplett zu ersetzen.

Code: Alles auswählen

[6] [Mrz 27 08:47:14:229]             Variable "Path"  had value  "C:\Program Files (x86)\Business Objects\Common\3.5\bin\NOTES\;C:\Program Files (x86)\Business Objects\Common\3.5\bin\NOTES\DATA\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\MIT\Kerberos\bin;C:\Program Files\OpenAFS\Common;C:\Program Files\OpenAFS\Client\Program;C:\Program Files\Windows Imaging\;C:\Program Files (x86)\Smart Projects\IsoBuster;C:\Program Files (x86)\cvsnt;C:\Program Files (x86)\CMake 2.8\bin"
[6] [Mrz 27 08:47:14:232]             Info:    "Path"  changed to ""C:\\Program Files (x86)\\CMake 2.8\\bin;""
So das ist die Ausgabe und das Problem. Das .ins skript macht den Key auf und gibt aus was bereits drin steht. Soweit so gut... Doch dann kommt der entscheidende Part.

Code: Alles auswählen

[6] [Mrz 27 08:47:14:232]             Info:    "Path"  changed to ""C:\\Program Files (x86)\\CMake 2.8\\bin;""
Er ersetzt alles was in diesem Pfad steht. Das ist ziemlich unpraktisch :D
Habe schon alle Dokumentationen, XWiki und Forum durch gelesen aber leider ohne Erfolg... Es muss doch irgendeinen einfachen Befehl wie add oder so geben mit dem man da was einbinden kann... Immerhin holt er sich das ja bereits ab und weiß was drin steht...

Ich wende mich hiermit jetzt an euch weil ich keine Lust habe für sowas ein extra skript zu schreiben, dass mir die variable ausließt und das hinzufügt... das muss doch mit einem Befehl gehen :D

Vielen Dank und Grüße
Proland
Zuletzt geändert von proland am 27 Mär 2014, 10:04, insgesamt 1-mal geändert.
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: Registry Wert hinzufügen statt neu setzen

Beitrag von dkoch »

Code: Alles auswählen

DefVar $CurPath$
DefVar $NewPath$
Set $CurPath$ = EnvVar(Path)
Set $NewPath$ = $CurPath$ + " Foobar"
Könnte mir so ein Konstrukt vorstellen.
Dann den Eintrag einfach durch $NewPath$ ersetzen

Edit: Mit contains noch abfangen ob der neue Wert in der Variable schon enthalten ist.

Code: Alles auswählen

if not contains($CurPath$,"Foobar")
Registry_Path_Add
endif
proland
Beiträge: 40
Registriert: 09 Dez 2013, 10:36

Re: Registry Wert hinzufügen statt neu setzen

Beitrag von proland »

Danke dkoch :)
Hat mich auf den richtigen Weg geleitet.

Code: Alles auswählen

Set $Path$ = EnvVar ("Path")
....
[Registry_Patch_Variable]
openkey [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
set "Path" = "$Path$"
supp "Path"; "C:\Program Files (x86)\CMake 2.8\bin;"
So läuft es jetzt. Zwar nicht das Optimum aber deutlich besser als ein extra Skript zu schreiben ;D
Also vielen Dank nochmal :)

Grüße
Proland
Benutzeravatar
SisterOfMercy
Beiträge: 1556
Registriert: 22 Jun 2012, 19:18

Re: Registry Wert hinzufügen statt neu setzen

Beitrag von SisterOfMercy »

proland hat geschrieben:

Code: Alles auswählen

Set $Path$ = EnvVar ("Path")
....
[Registry_Patch_Variable]
openkey [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
set "Path" = "$Path$"
supp "Path"; "C:\Program Files (x86)\CMake 2.8\bin;"
Uhh, if I remember correctly, you can simplify it like this:

Code: Alles auswählen

[Registry_Patch_Variable]
openkey [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
supp "Path"; "C:\Program Files (x86)\CMake 2.8\bin;"
[/quote]

To be honest I did not read that part of the manual when I was sober. :D
Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Antworten