![]() |
Systemvariable PATH ändern
Hallo,
ich möchte eine Installationsroutine schreiben, dabei muss die Systemvariable PATH geändert werden. Das funktioniert schon, jetzt benötige ich jedoch noch den "Deinstallationscode" um die Variable wieder zu entfernen, im PATH steht die Variable jetzt "mitten drin", wie kann ich meinen hinzugefügten Pfad wieder entfernen ? KUBA Code zum ändern:
Delphi-Quellcode:
procedure ReadEnviron (var PW: String);
Var Registry: tRegistry; Begin Registry := tRegistry.Create; Try Registry.RootKey := HKEY_LOCAL_MACHINE; Registry.OpenKey ('\SYSTEM\CurrentControlSet\Control\Session Manager\Environment', False); PW := Registry.ReadString ('Path'); Registry.CloseKey; Finally Registry.Free; End; End; procedure SetEnviron; var registrierung:TRegistry; //uses registry nicht vergessen PW :string; begin begin Registrierung:=Tregistry.Create; Registrierung.Rootkey:=HKEY_LOCAL_MACHINE; try Registrierung.OPENKEY('\SYSTEM\CurrentControlSet\Control\Session Manager\Environment',true); except Registrierung.CreateKey('\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'); end; ReadEnviron(PW); PW := PW + (';c:\test'); showmessage(PW); Registrierung.WriteString('Path', PW); Registrierung.free; end; end; |
Re: Systemvariable PATH ändern
Zitat:
Ach ja, was mir noch auffällt: deine Prozedur SetEnviron kann man noch ein wenig verbessern (schneller und ressourcenschonender machen), indem man ein paar Zeilen ändert/austauscht:
Delphi-Quellcode:
Da du bei OpenKey als zweiten Parameter true übergibst, wird der Schlüssel automatisch erzeugt, falls er nicht schon existiert. Damit kann man sich den separaten Aufruf von CreateKey sparen. Jedoch solltest du vielleicht noch den Rückgabewert von OpenKey überprüfen. Ist dieser True, dann konnte der Schlüssel geöffnet bzw. erstellt werden. Wenn der Rückgabewert False ist, konnte der Schlüssel nicht geöffnet werden.
procedure SetEnviron;
var registrierung:TRegistry; //uses registry nicht vergessen PW :string; begin begin Registrierung:=Tregistry.Create; Registrierung.Rootkey:=HKEY_LOCAL_MACHINE; Registrierung.OpenKey('\SYSTEM\CurrentControlSet\Control\Session Manager\Environment',true); PW := Registrierung.ReadString ('Path'); PW := PW + (';c:\test'); showmessage(PW); Registrierung.WriteString('Path', PW); Registrierung.free; end; end; MfG Binärbaum |
Re: Systemvariable PATH ändern
Statt pos() und copy() kannst du auch AnsiReplaceStr bzw. AnsiReplaceText(alter_wert, ';c:\test', '') nehmen.
|
Re: Systemvariable PATH ändern
vielen Dank !! :hello:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz