App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
64 Bit Progamme-Verzeichnis von 32 Bit Prozess aus ermitteln
- Ersteller Dalai
- Erstellt am
Dalai
Grand Admiral Special
★ Themenstarter ★
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.423
- Renomée
- 265
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Details zu meinem Desktop
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Hey Leute,
ich hätt da gern mal n Problem
. Einfach formuliert: Wie kann ich das 64 Bit "Program Files"-Verzeichnis von einem 32 Bit Prozess aus ermitteln?
Und bevor die Frage kommt, warum/wozu ich das brauche und solche Diskussionsverläufe wie hier entstehen: ich brauche es, um mit einem meiner Delphi-Programme (32 Bit) zu prüfen, ob eine bestimmte 64 Bit Anwendung bereits auf dem System vorhanden ist. Wobei "eine bestimmte" nicht ganz stimmt, denn es geht letztlich um eine unbekannte Zahl, die sich mit der Zeit ändern kann (und wohl auch wird). Weitere Details weiter unten im Post.
Ich habe natürlich schon gegooglet. Aber selbst wenn man die erst seit Vista verfügbare Funktion SHGetKnownFolderPath() mit der Konstante FOLDERID_ProgramFilesX64 (aus KNOWNFOLDERID) bemühen will, bekommt man von MS nur den Mittelfinger gezeigt
:
Bislang benutze ich die Registry bzw. die Umgebungsvariable %ProgramW6432% zur Ermittlung des Pfads, aber ich habe ja immer noch Hoffnung, dass es auch ohne diese Krämpfe geht
.
Weitere Details zur Problemstellung
Besagtes Delphi-Programm dient zur Installation von Software auf dem System. Die Definitionen dazu erfolgen in INI-Dateien, worin hinterlegt ist, wie die Software heißt, welche Version, welche OS sie unterstützt, den Pfad der Setupdatei usw. usf. Eine derartige INI sieht dann z.B. so aus:
Um nun dem Benutzer visuell mitteilen zu können, ob eine bestimmte Software bereits auf dem System vorhanden ist (und wenn ja, in welcher Version), wird anhand von InstallCheck geprüft, ob die darin angegebene Datei vorhanden ist und dessen Version ermittelt. Ich muss also in der Lage sein, den Pfad des 64 Bit "Program Files" zu finden, damit die Findung auch auf einem 64 Bit Windows funktioniert. Dass ich hier statt der Umgebungsvariable keinen hartkodierten Pfad verwenden kann und will, versteht sich von selbst.
MfG Dalai
ich hätt da gern mal n Problem

Und bevor die Frage kommt, warum/wozu ich das brauche und solche Diskussionsverläufe wie hier entstehen: ich brauche es, um mit einem meiner Delphi-Programme (32 Bit) zu prüfen, ob eine bestimmte 64 Bit Anwendung bereits auf dem System vorhanden ist. Wobei "eine bestimmte" nicht ganz stimmt, denn es geht letztlich um eine unbekannte Zahl, die sich mit der Zeit ändern kann (und wohl auch wird). Weitere Details weiter unten im Post.
Ich habe natürlich schon gegooglet. Aber selbst wenn man die erst seit Vista verfügbare Funktion SHGetKnownFolderPath() mit der Konstante FOLDERID_ProgramFilesX64 (aus KNOWNFOLDERID) bemühen will, bekommt man von MS nur den Mittelfinger gezeigt

This value is not supported on 32-bit operating systems. It also is not supported for 32-bit applications running on 64-bit operating systems. Attempting to use FOLDERID_ProgramFilesX64 in either situation results in an error.
Bislang benutze ich die Registry bzw. die Umgebungsvariable %ProgramW6432% zur Ermittlung des Pfads, aber ich habe ja immer noch Hoffnung, dass es auch ohne diese Krämpfe geht

Weitere Details zur Problemstellung
Besagtes Delphi-Programm dient zur Installation von Software auf dem System. Die Definitionen dazu erfolgen in INI-Dateien, worin hinterlegt ist, wie die Software heißt, welche Version, welche OS sie unterstützt, den Pfad der Setupdatei usw. usf. Eine derartige INI sieht dann z.B. so aus:
Code:
[Script]
UID=ClassicShell3
Name=ClassicShell
Ver=3.2.0
Desc=Klassisches Startmenü & Explorer
Category=System
File="\Installs\System\ClassicShell\v3\Classic Shell 3.2.0.exe"
Systems=Vista_SP*, Vista_x64_SP*, 7_SP*, 7_x64_SP*
Default=0
RequireAdmin=1
Params=/qr ADDLOCAL=ClassicExplorer,ClassicStartMenu
InstallCheck=%ProgramFiles%\Classic Shell\ClassicStartMenuDLL.dll
X64=1
Prio=10
InstallSize=7
MfG Dalai
Crashtest
Redaktion
☆☆☆☆☆☆
- Mitglied seit
- 11.11.2008
- Beiträge
- 9.326
- Renomée
- 1.457
- Standort
- Leipzig
- Mitglied der Planet 3DNow! Kavallerie!
- Aktuelle Projekte
- Collatz, yoyo, radac
- Lieblingsprojekt
- yoyo
- Meine Systeme
- Ryzen: 2x1600, 5x1700, 1x2700,1x3600, 1x5600X; EPYC 7V12 und Kleinzeuch
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- Lenovo IdeaPad 5 14ALC05
- Details zu meinem Desktop
- Prozessor
- Ryzen 7950X / Ryzen 4750G
- Mainboard
- ASRock B650M PGRT / X570D4U
- Kühlung
- be quiet! Dark Rock Pro4 / Pure Rock Slim 2
- Speicher
- 64GB DDR5-5600 G Skill F5-5600J3036D16G / 32 GB DDR4-3200 ECC
- Grafikprozessor
- Raphael IGP / ASpeed AST-2500
- Display
- 27" Samsung LF27T450F
- SSD
- KINGSTON SNVS2000G
- HDD
- - / 8x Seagate IronWolf Pro 20TB
- Optisches Laufwerk
- 1x B.Ray - LG BD-RE BH16NS55
- Soundkarte
- onboard HD?
- Gehäuse
- zu kleines für die GPU
- Netzteil
- be quiet! Pure Power 11 400W / dito
- Tastatur
- CHERRY SECURE BOARD 1.0
- Maus
- Logitech RX250
- Betriebssystem
- Windows 10 19045.5435 / Server 20348.3091
- Webbrowser
- Edge 132.0.2957.127
- Verschiedenes
- U320 SCSI-Controller !!!!
- Internetanbindung
- ▼1000 MBit ▲82 MBit
Tja wenn nix anderes hilft - direkt aus Registry auslesen:
ausm HKLM\Software\Microsoft\Windows\CurrentVersion
welches bei 32Bit auf 64 aus HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion gemappt wird
folgenden Wert auslesen "ProgramW6432Dir"
Etwas Delphi, benötig Unit Registry;
Function WoIstProgramme : String;
Var
Reg : TRegistry;
begin
Reg:=TRegistry.Create;
Reg.Rootkey:=HKEY_LOCAL_MACHINE;
RegOpenKey('\Software\Microsoft\Windows\CurrentVersion\');
if Reg.ValueExists('ProgramW6432Dir')
then
begin
Result:=Reg.ReadString('ProgramW6432Dir')
else
begin
Result:=Reg.ReadString('ProgramFilesDir')
end;
Reg.Free;
end; // of Function
ausm HKLM\Software\Microsoft\Windows\CurrentVersion
welches bei 32Bit auf 64 aus HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion gemappt wird
folgenden Wert auslesen "ProgramW6432Dir"
Etwas Delphi, benötig Unit Registry;
Function WoIstProgramme : String;
Var
Reg : TRegistry;
begin
Reg:=TRegistry.Create;
Reg.Rootkey:=HKEY_LOCAL_MACHINE;
RegOpenKey('\Software\Microsoft\Windows\CurrentVersion\');
if Reg.ValueExists('ProgramW6432Dir')
then
begin
Result:=Reg.ReadString('ProgramW6432Dir')
else
begin
Result:=Reg.ReadString('ProgramFilesDir')
end;
Reg.Free;
end; // of Function
Dalai
Grand Admiral Special
★ Themenstarter ★
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.423
- Renomée
- 265
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Details zu meinem Desktop
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Bislang benutze ich die Registry bzw. die Umgebungsvariable %ProgramW6432% zur Ermittlung des Pfads [...]
Aber es wird ja - völlig zu Recht - immer davon abgeraten, derartige Pfade aus der Registry zu holen, denn die können sich ja mit einer neuen Windows-Version ändern. Und genau das ist die Zwickmühle, in der ich mich befinde.
MfG Dalai
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.694
- Renomée
- 1.276
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Details zu meinem Desktop
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech MX Master 3S
- Betriebssystem
- Ubuntu Linux 24.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Wow64DisableWow64FsRedirection + Wow64RevertWow64FsRedirection
Dalai
Grand Admiral Special
★ Themenstarter ★
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.423
- Renomée
- 265
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Details zu meinem Desktop
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Das habe ich bereits probiert, aber es bringt nichts. Weder für die Funktion SHGetFolderPath() noch für SHGetKnownFolderPath() noch für die durch Windows stattfindende Expandierung der Umgebungsvariablen via ExpandEnvironmentStrings(). Ist ja mehr oder minder auch logisch, denn es findet ja beim Ermitteln des Programme-Verzeichnisses erstmal kein Zugriff aufs Dateisystem statt, was die Funktionen Wow64DisableWow64FsRedirection() & Co aber behandeln.
MfG Dalai
MfG Dalai
Crashtest
Redaktion
☆☆☆☆☆☆
- Mitglied seit
- 11.11.2008
- Beiträge
- 9.326
- Renomée
- 1.457
- Standort
- Leipzig
- Mitglied der Planet 3DNow! Kavallerie!
- Aktuelle Projekte
- Collatz, yoyo, radac
- Lieblingsprojekt
- yoyo
- Meine Systeme
- Ryzen: 2x1600, 5x1700, 1x2700,1x3600, 1x5600X; EPYC 7V12 und Kleinzeuch
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- Lenovo IdeaPad 5 14ALC05
- Details zu meinem Desktop
- Prozessor
- Ryzen 7950X / Ryzen 4750G
- Mainboard
- ASRock B650M PGRT / X570D4U
- Kühlung
- be quiet! Dark Rock Pro4 / Pure Rock Slim 2
- Speicher
- 64GB DDR5-5600 G Skill F5-5600J3036D16G / 32 GB DDR4-3200 ECC
- Grafikprozessor
- Raphael IGP / ASpeed AST-2500
- Display
- 27" Samsung LF27T450F
- SSD
- KINGSTON SNVS2000G
- HDD
- - / 8x Seagate IronWolf Pro 20TB
- Optisches Laufwerk
- 1x B.Ray - LG BD-RE BH16NS55
- Soundkarte
- onboard HD?
- Gehäuse
- zu kleines für die GPU
- Netzteil
- be quiet! Pure Power 11 400W / dito
- Tastatur
- CHERRY SECURE BOARD 1.0
- Maus
- Logitech RX250
- Betriebssystem
- Windows 10 19045.5435 / Server 20348.3091
- Webbrowser
- Edge 132.0.2957.127
- Verschiedenes
- U320 SCSI-Controller !!!!
- Internetanbindung
- ▼1000 MBit ▲82 MBit
Der Weg über die Registry geht von Windows NT 5.2 (XP64, Server 2003) bis NT 6.2 (8, Server 8 ).
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.694
- Renomée
- 1.276
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Details zu meinem Desktop
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech MX Master 3S
- Betriebssystem
- Ubuntu Linux 24.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Meines Wissens gibts das ganze auch noch für die Registry, mir fallen aber gerade die Namen nicht ein.Das habe ich bereits probiert, aber es bringt nichts. Weder für die Funktion SHGetFolderPath() noch für SHGetKnownFolderPath() noch für die durch Windows stattfindende Expandierung der Umgebungsvariablen via ExpandEnvironmentStrings(). Ist ja mehr oder minder auch logisch, denn es findet ja beim Ermitteln des Programme-Verzeichnisses erstmal kein Zugriff aufs Dateisystem statt, was die Funktionen Wow64DisableWow64FsRedirection() & Co aber behandeln.
MfG Dalai
Dalai
Grand Admiral Special
★ Themenstarter ★
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.423
- Renomée
- 265
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Details zu meinem Desktop
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Ja, ich weiß, es gibt Flags für RegOpenKeyEx() & Co (KEY_WOW64_64KEY) und genau die benutze ich ja auch, um die Redirection beim Lesen der Registry zu verhindern. Aber darum geht's mir ja nicht. Mir geht's darum, eine API-Funktion zu benutzen statt die Registry auszuwerten, wenn ich mir das Programme-Verzeichnis auf einem 64 Bit Windows hole.Meines Wissens gibts das ganze auch noch für die Registry, mir fallen aber gerade die Namen nicht ein.
Irgendwie wird mir MS immer suspekter. Nur weil die sich keine Anwendungsfälle für Dies und Jenes vorstellen können, heißt das nicht, dass es keine (durchaus sinnvollen) gibt. Dass sie nur deswegen FOLDERID_ProgramFilesX64 nicht unterstützen, ist irgendwie ... schräg, um's mal milde auszudrücken

MfG Dalai
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 471
- Antworten
- 13
- Aufrufe
- 2K
- Antworten
- 3
- Aufrufe
- 2K