Einzelnen Beitrag anzeigen

Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#24

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 15:58
Aber auch das ist lösbar, indem du dem Nutzer die Möglichkeit gibst, den Ort der Installation anzugeben, ggf. erst, nachdem die automatische Suche fehlschlug.
Das ist ja cool, genau so ist es in meinem Code!

Zuerst lese ich den Eintrag in der Registry, dann sehe ich in "Program files\Unterordner\..." nach, dann in "Program files (86)\Unterordner\...", und wenn nichts gefunden wird, fragt mein Programm den User.


Und die Lösung wäre jetzt?
Es ist ganz unten der letzte Beitrag:
Zitat:
I know this is an old question, but I don't think that hard-coding the path is a good solution. I'm not sure you can rely on this in foreign language versions of Windows for example.

It occured to me that you should be able to get this from the registry. I did a bit more searching and came up with this (this is VB code, but presumably the same or similar in C#):
Code:
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion").GetValue("ProgramFilesDir")
Und aus diesem Thread (den hatte ich vergessen) das hier rausgepickt, um mit einem 32 bit Programm auf den 64 bit Zweig der Registry zugreifen zu können, ohne umgeleitet zu werden:

Edit: Wichtige Änderung: Für KEY_ALL_ACCESS werden Adminrechte benötigt. Zum Lesen genügt KEY_READ. Danke Dalai, für den Hinweis!
Code:
Reg.Access := KEY_WOW64_64KEY or KEY_READ
Guido.

Geändert von Guido Eisenbeis (10. Jan 2020 um 15:27 Uhr)
  Mit Zitat antworten Zitat