Programmpfad Firefox
Hi,
ich vrsuch den Programpfad von Firefox so zu ermittel:
Delphi-Quellcode:
abgeleitet von hier: hier
procedure TFormMain.Button2Click(Sender: TObject);
const UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'; var Reg: TRegistry; SubKeys: TStringList; i: integer; sDisplayName, sUninstallString: string; begin Reg := TRegistry.Create; with Reg do try RootKey := HKEY_LOCAL_MACHINE; if OpenKeyReadOnly(UNINST_PATH) then begin SubKeys := TStringList.Create; try GetKeyNames(SubKeys); CloseKey; for i := 0 to subKeys.Count - 1 do if OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKeys[i]])) then try sDisplayName := Reg.ReadString('Comments'); sUninstallString := Reg.ReadString('InstallLocation'); if sDisplayName <> '' then begin if sDisplayName = 'Mozilla Firefox' then begin showmessage(sUninstallString+'\'+sDisplayName); end; end; finally Reg.CloseKey; end; finally SubKeys.Free; end; end; finally CloseKey; Free; end; end; Bekomm allerdings eine Fehlermeldung: access violation at 0x77cd4eec: write of address 0x00030ffc Fehler tritt nur auf bei
Delphi-Quellcode:
Wie kann bei "Shomessage" denn eine access auftreten?
showmessage(sUninstallString+'\'+sDisplayName);
|
AW: Programmpfad Firefox
Moin,
hast du vielleicht selber eine Methode geschrieben, die showmessage heißt? Weil laut Hilfe dürfte TRegistry.ReadString() kein nil zurückgeben. Vielleicht hilft da dann, die Unit anzugeben, wo er das ShowMessage zu suchen hat:
Delphi-Quellcode:
MfG
Dialogs.ShowMessage('foobar');
Fabian |
AW: Programmpfad Firefox
Es muss etwas in der Richtung wie von xZise beschrieben sein. Hier funktioniert es ohne Probleme. Versuch den Code mal in einem neu angelegten Projekt auszuführen...
|
AW: Programmpfad Firefox
Übrigens, wenn dein Programm unter 64 bit läuft musst du auch woanders gucken. Ich habe es z.B. da gefunden:
Code:
MfG
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (4.0b2)
Fabian PS: Warum nutzt du eigentlich nicht den With-Block? Abgesehen davon, dass ich ihn da eh raus genommen hätte? |
AW: Programmpfad Firefox
Und auch nur, wenn der Firefox per Installer eingerichtet wurde
|
AW: Programmpfad Firefox
Zitat:
Und vorallem die verwendeten Variablen, denn der Fehler muß nicht unbedingt in der Funktion auftreten, da in der selben Zeile auch noch quasi ein ConcatString versteckt ist. :stupid: Und wenn schon With, warum dann nicht konsequent?
Delphi-Quellcode:
with Reg do
Reg.ReadString('Comments'); Reg.ReadString('InstallLocation'); Reg.CloseKey |
AW: Programmpfad Firefox
Zitat:
Delphi-Quellcode:
OK, zu spät.
Reg.Reg.CloseKey
|
AW: Programmpfad Firefox
Ich wollte nicht eigentlich groß über den with-Block argumentieren und habe deshalb nur kurz gesagt, er solle ihn doch aber eher besser rausnehmen.
@ himitsu: Und wo kann bei einem Concat von zwei Strings eine AV auftreten? @ Threadersteller: Ich würde dir vorschlagen, ob man nicht eventuell anders an den Pfad von Firefox kommt. @ mkinzler: Bei der portablen Version würde es nicht so viel sinn ergeben, den Programmpfad zu suchen, weil der könnte in 0,nix ungültig werden. MfG Fabian |
AW: Programmpfad Firefox
@xZise: defekte Strings?
|
AW: Programmpfad Firefox
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 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