AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Systemvariable PATH ändern

Ein Thema von kuba · begonnen am 28. Aug 2007 · letzter Beitrag vom 29. Aug 2007
Antwort Antwort
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#1

Systemvariable PATH ändern

  Alt 28. Aug 2007, 18:14
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;
Stefan Kubatzki
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Systemvariable PATH ändern

  Alt 29. Aug 2007, 02:20
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#3

Re: Systemvariable PATH ändern

  Alt 29. Aug 2007, 05:15
Statt pos() und copy() kannst du auch AnsiReplaceStr bzw. AnsiReplaceText(alter_wert, ';c:\test', '') nehmen.
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#4

Re: Systemvariable PATH ändern

  Alt 29. Aug 2007, 21:32
vielen Dank !!
Stefan Kubatzki
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf