Zitat von
kuba:
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
Zunächst liest du den Pfad wieder wie oben aus. Danach kannst du mit der Funktion
pos() ermitteln, an welcher Stelle in der PATH-Variable der Pfad zu deinem Programm steht. Mit
copy() kann man dann aus dem String den Teil vor dieser Stelle und den Teil danach herausfischen, und schließlich muss man diese beiden nur noch zusammenfügen und den so erhaltenen Wert wieder in die Registry schreiben.
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:
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;
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.
MfG
Binärbaum