![]() |
Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Hallo.
Zitat:
Disclaimer: Bitte nur Lösungen posten, die funktionieren. Bitte nicht raten, und keine Suche empfehlen, weder Google & Co, noch Forensuche usw. Bitte keine Verweise auf Threads, wo ähnliches gefragt wurde, es sei den es wurde eine Lösung gefuden. Auch nicht mehr fragen, ob ich schon ... Ich habe! Und nichts gefunden. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Das stimmt nicht. Ich habe doch gebeten, nicht zu raten. Bitte teste doch mal selbst.
![]() |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Hallo Frühlingsrolle.
Delphi-Quellcode:
Die Lösung mit den Umgebungsvariablen kenne ich, die ist im Link drin, den ich oben gepostet habe. Das wäre zwar eine Möglichkeit, (sogar die einzige, die ich kenne), aber Umgebungsvariablen sind nicht zuverlässig. Gibt es eine andere Lösung?
// uses SysUtils;
Edit1.Text := GetEnvironmentVariable('ProgramW6432'); Edit2.Text := GetEnvironmentVariable('ProgramFiles(x86)'); Dennoch vielen Dank für deine Mühe! :thumb: |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Da hast du Recht. *seufz* :? Ich habe da ewig lange recherchiert und nichts gefunden. Danke für den Versuch, so bin ich wenigstens nicht allein. :wink:
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
In
![]() Zitat:
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Hallo Detlef.
Leider ist das keine Lösung, wie gesagt, es soll aus einer 32 bit Anwendung ermittelt werden. Der Hintergrund ist der, dass ich mit meinem Programm (sagen wir MyProg) herausfinden will, wo sich ein fremdes Programm (nennen wir's ExternalProg) installiert hat. Da ich nicht weiß, ob der User ExternalProg_x86 oder ExternalProg_x64 installiert hat, muss ich beide Pfade ermitteln. MyProg ist eine 32 bit Anwendung, weil die auch auch 64 bit OS läuft, aber umgekehrt funktioniert das nicht. :wink: Danke für den Tipp! |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
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.
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Aber wie soll ich es starten, wenn ich nicht weiß wo es installiert ist? :mrgreen: Gibt es denn einen virutellen Ordner Pfad oder was ähnliches, der auf allen Windowsen gleich ist? Wie heißt denn "Program files" z. B. in einem französichen Windows, oder einem kroatischen? Chinesisch ist auch nicht schlecht. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Tippe doch in eine beliebige Windows Explorer Addresszeile das englische "C:\Program files" (ja, ohne Anführungszeichen) und schaue wo du rauskommst! Des Weitern würde ich mal in die Windows Registry nachschauen, ob dieses ominöse "ExternalProg" ggf. den Informationen zu seinen Aufenthaltsort abspeichert. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Die Ordner heißen immer Program Files bzw. Program Files (x86). Die Übersetzungen sind nur Links. So verweist "C:\Programme" hier unter einem 64-Bit Programm auf "C:\Program Files".
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Wenn du wissen willst, ob ein Programm installiert ist, dann schau doch in
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win dows\CurrentVersion\Uninstall und HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ Windows\CurrentVersion\Uninstall nach. Im Wert "InstallLocation" ist der Ordner drin. Wenn es sich um ein MSI handelt, dann kannst du den Windows-Installer über die API direkt abfragen. Wenn du eine bestimmte Funktion davon braucht, könnte man auch auf eine Komponente prüfen. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Ist das auch in chinesisch, kroatisch, usw. so? Bitte nicht falsch verstehen, ich will nur sicher gehen. Nach all dem Suchen wäre somit die Lösung so einfach, oder? :-D
FileExists('C:\Program Files\ExampleFolder\ExternalProg.exe') ...
FileExists('C:\Program Files (x86)\ExampleFolder\ExternalProg.exe') ... Liegen die Ordner immer im LW-Root? Also könnte ich das abklappern: C:\Program Files, D:\Program Files, E:\Program Files usw? |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win dows\CurrentVersion\Uninstall Ansonsten eine gute Idee! :thumb: Werde ich mir ansehen. Mit der Möglichkeit "Program Files" und "Program Files (x86)" zu benutzen, müsste man immer noch die LWs abklappern. Wenn dein Vorschlag mit der Registry funktionieren würde, hätte man gleich den Pfad inkl Unterordner. Bleibt nur zu hoffen, dass die portable Version von ExternalProg nur selten verwendet wird. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Das sieht doch schonmal gut aus. Ist aber noch zu Testen, ob das mit anderen Windowsen auch funktioniert, Win XP, Vista, 7, 8, 8 1/2, :mrgreen: x64, x86, (gibts noch was? Gibts XP und Vista noch? :gruebel: ). |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
.. 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 |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Ein Dienst bietet sich an, der mit dir per TCP kommuniziert. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Das wäre ein bisschen zuviel Aufwand. Aber danke euch beiden, jetzt verstehe ich was gemeint ist! :)
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
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 |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
Aber es gibt viele Programme, die den Benutzer fragen, wo irgendwelche anderen Programme installiert sind. Audacity hat zum Beispiel früher gefragt, wo der MP3 Encoder installiert ist. Für Registryzugriffe kann man ein Flag setzten, so dass 32-Bit Zugriffe nicht umgebogen werden. Gibt es das eventuell auch für die Folder-APIs? |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Zitat:
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. Zitat:
Zitat:
Code:
Und aus
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion").GetValue("ProgramFilesDir")
![]() Edit: Wichtige Änderung: Für KEY_ALL_ACCESS werden Adminrechte benötigt. Zum Lesen genügt KEY_READ. Danke Dalai, für den Hinweis! :-D
Code:
Guido.
Reg.Access := KEY_WOW64_64KEY or KEY_READ
|
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
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 |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
@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! :thumb: Guido. |
AW: Windows Programme Ordner x64 in 32 bit Progrmm ermitteln
Da ich schon vor dem Posten einiges recherchiert hatte, dachte ich nicht, dass es eine Lösung für das Problem gibt. Nun haben wir sogar mehrere Lösungen gefunden. Hier meine Favoriten:
- ![]() - ![]() ![]() Ein großes Dankeschön an alle, die geholfen haben! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 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 by Thomas Breitkreuz