AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wildcards im Registry Key Path [gelöst]

Ein Thema von Bastian Th. · begonnen am 7. Nov 2008 · letzter Beitrag vom 7. Nov 2008
Antwort Antwort
Bastian Th.

Registriert seit: 7. Nov 2008
3 Beiträge
 
#1

Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 10:23
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:
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.
Vielen dank schonmal für eure Hilfe

Gruss Bastian
  Mit Zitat antworten Zitat
Bastian Th.

Registriert seit: 7. Nov 2008
3 Beiträge
 
#2

Re: Wildcards im Registry Key Path

  Alt 7. Nov 2008, 12:30
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:
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.
ALso dann bis bald

Gruss Bastian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 12:43
Bist du sicher, dass du das willst:
dir := GetCurrentDir; GetCurrentDir liefert das aktuelle Arbeitsverzeichnis, welches nicht zwingend das Verzecihnis des Programmes sein muss.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 12:54
Besser wäre dann ExtractFilePath(Application.ExeName)
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 13:25
In diesem Fall eher ExtractFilePath(ParamStr(0)) , da er die Unit Forms in einer Konsolenanwendung wohl eher nicht braucht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bastian Th.

Registriert seit: 7. Nov 2008
3 Beiträge
 
#6

Re: Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 14:22
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
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 14:37
Zitat von Bastian Th.:
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
Ein starten über Verknüpfungen und dergleichen kann diesen Pfad verändern.

Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

Re: Wildcards im Registry Key Path [gelöst]

  Alt 7. Nov 2008, 15:05
Kleine Beweisführung: folgendes Projekt
Delphi-Quellcode:
program DirTest;

uses
  SysUtils;

{$APPTYPE CONSOLE}

begin
  writeln('Aktuelles Verzeichnis: ' + GetCurrentDir);
  writeln('Eigenes Verzeichnis: ' + ExtractFilePath(ParamStr(0)));
end.
Kompilieren und die Exe z.B. nach "C:\Programme\Test" kopieren. Dann die Eingabeaufforderung öffnen und nacheinander Folgendes eingeben:
Code:
C:
cd \
programme\test\dirtest
cd programme\test
dirtest
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 08:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz