![]() |
Wildcards im Registry Key Path [gelöst]
Hallo Leute.
Meiner erster Post und gleich unverschämter weise ne Frage :-) Ich habe ein Konsolenprogramm geschrieben das mir zuerst den aktuellen Pfad in dem das Programm ausgeführt wird ausliest. Anschließend hole ich mir den Inhalt des Key´s Path aus der Registry in eine String Variable. An diese String Variable hänge ich dann ein Semikolon und den ausgelesenen aktuellen Pfad. Jetzt wird der Key Path in der Registry geöffnet und mit dem Inhalt des erweiterten Strings gefüllt. Das Funktioniert auch alles so weit ganz gut. Leider werden im Key Path in der Registry aber Wildcards wie %system% und ähnliches verwendet. Mein Programm liest und setzt aber leider die statischen Pfade und nicht die Wildcards. Das ist extrem schlecht. Wie kann ich es also hinbekommen das er mir die Wildcards mit ausliest und auch wieder so zuückschreibt ???? Ich hänge hier auch nochmal mein Programm an
Code:
Vielen dank schonmal für eure Hilfe
program PPath_Variable;
{$APPTYPE CONSOLE} uses SysUtils, JCLSYSINFO, Registry, Windows; const name = 'Path' ; var dir, path : string; regist: TRegistry; begin dir := GetCurrentDir; GetEnvironmentVariable(name, path); path := path+';'+dir; regist:=TRegistry.Create; try regist.RootKey:=HKEY_LOCAL_MACHINE; regist.OpenKey('\SYSTEM\ControlSet001\Control\Session Manager\Environment', true); regist.WriteExpandString('Path', path); regist.CloseKey; finally regist.free; end; end. Gruss Bastian |
Re: Wildcards im Registry Key Path
So !!!
Mitlerweile bin ich selbst auf die Lösung gekommen :-) Für den, den es interessiert was ich geändert habe, hier nochmal der neue Code
Code:
ALso dann bis bald
program PPath_Variable;
{$APPTYPE CONSOLE} uses SysUtils, JCLSYSINFO, Registry, Windows; const name = 'Path' ; var dir, path : string; regist: TRegistry; i : integer ; begin dir := GetCurrentDir; regist:=TRegistry.Create; try regist.RootKey:=HKEY_LOCAL_MACHINE; regist.OpenKey('\SYSTEM\ControlSet001\Control\Session Manager\Environment', true); path := regist.ReadString(name); i:= pos(dir, path); if i = 0 then begin path := path+';'+dir; regist.WriteExpandString('Path', path); end; regist.CloseKey; finally regist.free; end; end. Gruss Bastian |
Re: Wildcards im Registry Key Path [gelöst]
Bist du sicher, dass du das willst:
Delphi-Quellcode:
GetCurrentDir liefert das aktuelle Arbeitsverzeichnis, welches nicht zwingend das Verzecihnis des Programmes sein muss.
dir := GetCurrentDir;
|
Re: Wildcards im Registry Key Path [gelöst]
Besser wäre dann
Delphi-Quellcode:
ExtractFilePath(Application.ExeName)
|
Re: Wildcards im Registry Key Path [gelöst]
In diesem Fall eher
Delphi-Quellcode:
, da er die Unit Forms in einer Konsolenanwendung wohl eher nicht braucht.
ExtractFilePath(ParamStr(0))
|
Re: Wildcards im Registry Key Path [gelöst]
Also ich habe die Compilierte exe mal in verschiedene Pfade kopiert und dann ausgeführt. Als Ergebnis hat er mir bei GetCurrentDir immer das ausgegeben in dem die exe geöffnet wurde.
Wo besteht hier genau das Problem ?? Gruss Bastian |
Re: Wildcards im Registry Key Path [gelöst]
Zitat:
Grüße, Max |
Re: Wildcards im Registry Key Path [gelöst]
Kleine Beweisführung: folgendes Projekt
Delphi-Quellcode:
Kompilieren und die Exe z.B. nach "C:\Programme\Test" kopieren. Dann die Eingabeaufforderung öffnen und nacheinander Folgendes eingeben:
program DirTest;
uses SysUtils; {$APPTYPE CONSOLE} begin writeln('Aktuelles Verzeichnis: ' + GetCurrentDir); writeln('Eigenes Verzeichnis: ' + ExtractFilePath(ParamStr(0))); end.
Code:
C:
cd \ programme\test\dirtest cd programme\test dirtest |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 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