AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

Ein Thema von Guido Eisenbeis · begonnen am 9. Jan 2020 · letzter Beitrag vom 10. Jan 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

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

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 09:12
Wenn sich das externe 64bit-Programm nicht starten lässt, weil es sich um ein 32Bit-Windows handelt, kannst Du Dir den Rest der Prüfung doch sparen.
Nicht schlecht, Herr Specht!

Aber wie soll ich es starten, wenn ich nicht weiß wo es installiert ist?
Ich meinte Dein eigenes 64Bit-Programm, welches Dir den Pfad ermitteln soll. Das muss dann eben in einem festgelegten Ordner liegen.
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
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.785 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 09:23
.. ein portables Programm kann irgendwo installiert werden,
Es muss nicht zwangsläufig in Program Files oder Program Files(x86) liegen.

Wenn Du die finden willst, musst Du die ganze Platte durchsuchen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Guido Eisenbeis

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

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 09:27
.. ein portables Programm kann irgendwo installiert werden,
Es muss nicht zwangsläufig in Program Files oder Program Files(x86) liegen.

Wenn Du die finden willst, musst Du die ganze Platte durchsuchen.
Da hast du Recht. In dem Fall hätte ich schlechte Karten.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#4

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 14:17
[...]Wenn Du die finden willst, musst Du die ganze Platte durchsuchen.
Da hast du Recht. In dem Fall hätte ich schlechte Karten.
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.

PS: Ich hasse es, wenn Programme bestimmte Dinge annehmen (ggf. sogar hartkodiert) und der Nutzer keine Möglichkeit hat, vom Standard abweichende Parameter zu bestimmen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Guido Eisenbeis

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

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 14: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 14:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#6

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 15:10
Beachte, dass KEY_ALL_ACCESS in Verbindung mit HKLM Adminrechte benötigt. Sofern du nur lesen musst, solltest du stattdessen KEY_READ benutzen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Guido Eisenbeis

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

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 10. Jan 2020, 14:27
@Dalai

Ich habe es ausprobiert und kann es bestätigen: Mit KEY_ALL_ACCESS braucht man Adminrechte, mit KEY_READ gehts auch ohne. In meinem Posting #27 habe ich es geändert.

Vielen Dank für den Hinweis!

Guido.
  Mit Zitat antworten Zitat
Guido Eisenbeis

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

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 09:24
Ich meinte Dein eigenes 64Bit-Programm, welches Dir den Pfad ermitteln soll. Das muss dann eben in einem festgelegten Ordner liegen.
Das verstehe ich nicht ganz. Es geht doch um mein 32 bit Programm, das ermitteln soll, wo sich das externe Programm installiert hat.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 09:27
Ich meinte Dein eigenes 64Bit-Programm, welches Dir den Pfad ermitteln soll. Das muss dann eben in einem festgelegten Ordner liegen.
Das verstehe ich nicht ganz. Es geht doch um mein 32 bit Programm, das ermitteln soll, wo sich das externe Programm installiert hat.
Es war so gedacht, dass du dir eine 64-bit Anwendung schreibst die nach dem Programm sucht. Diese 64-bit Software kann ganz ohne Umleitungen zu beachten auf alle Pfade und Registry Zweige zugreifen und deiner 32-bit Anwendung das Ergebnis der Suche zurückmelden.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.081 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln

  Alt 9. Jan 2020, 09:28
Ich meinte Dein eigenes 64Bit-Programm, welches Dir den Pfad ermitteln soll. Das muss dann eben in einem festgelegten Ordner liegen.
Das verstehe ich nicht ganz. Es geht doch um mein 32 bit Programm, das ermitteln soll, wo sich das externe Programm installiert hat.
Er meint ein zweites und neues Programm von dir in 64-Bit, was deinem alten 32-Bit Programm Bescheid gibt.
Ein Dienst bietet sich an, der mit dir per TCP kommuniziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:25 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