Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   läuft Programm unter 32-Bit oder 64-Bit ab ? (https://www.delphipraxis.net/192951-laeuft-programm-unter-32-bit-oder-64-bit-ab.html)

Gerkey 6. Jun 2017 08:20

läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Habe Programme in der 32-Bit Version erstellt, die nun auch unter 64-Bit ablaufen sollen, was aber Änderungen u.a. beim Umgang mit einer MSACCESS Datenbank erfordert.
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?

Uwe Raabe 6. Jun 2017 08:42

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Zitat:

Zitat von Gerkey (Beitrag 1373506)
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?

Gibt es: IsWow64Process

p80286 6. Jun 2017 08:43

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Könntest Du das ein wenig ausführlicher erklären?
Ich arbeite seit Jahren mit 32-Bit-Kompilaten sowohl unter 32-Bit als auch 64-Bit Betriebssystemen, ohne Änderungen an den Programmen vor zu nehmen.

Gruß
K-H

himitsu 6. Jun 2017 09:48

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Es gibt für 32 Bit-Programme in einem 64 Bit-Windows, also unter WoW64 einige "Umleitungen", in der Registry und im Dateisystem.

Vorallem bei Dingen, die es als 32 und 64 Bit gibt, kommt es schonmal vor dass es da Prolemchen gibt, wenn sie von Beidem angesprochen werden können. (hier die DB)

Also passend zum IsWow64Process würde ich noch MSDN-Library durchsuchenWow64DisableWow64FsRedirection erwähnen.

Der schöne Günther 6. Jun 2017 09:53

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Zitat:

Zitat von himitsu (Beitrag 1373521)
Also passend zum IsWow64Process würde ich noch MSDN-Library durchsuchenWow64DisableWow64FsRedirection erwähnen.

Die Doku sagt
Zitat:

This value is for system use only. To avoid unpredictable behavior, do not modify this value in any way.
Was würdest du sagen wozu man das braucht?

himitsu 6. Jun 2017 11:20

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Dann hätten die das eben als geheime Funktion nicht in die Doku aufnehmen sollen. :stupid:

Zitat:

Zitat von Der schöne Günther (Beitrag 1373523)
Was würdest du sagen wozu man das braucht?

Wenn man absichtlich auf bestimmte Verzeichnisse zugreifen will/muß, aber das System einen da standardmäßig immer umleitet.

Luckie 6. Jun 2017 13:22

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Ich habe es zum Beispiel bei meinem Usermanger benötigt, damit er auch unter 64-Bit funktioniert und die Registryeinträge in den richtigen Zweig schreibt.

Zacherl 6. Jun 2017 13:57

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1373509)
Zitat:

Zitat von Gerkey (Beitrag 1373506)
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?

Gibt es: IsWow64Process

Die API ist aber etwas tricky:
Zitat:

A pointer to a value that is set to TRUE if the process is running under WOW64. If the process is running under 32-bit Windows, the value is set to FALSE. If the process is a 64-bit application running under 64-bit Windows, the value is also set to FALSE.
Hier gibt es jetzt zwei Fälle, in denen die API "false" wird:
  1. 32-Bit Windows -> Eigener Prozess ist zwingend auch 32-Bit
  2. 64-Bit Prozess

Macht also keine sichere Aussage darüber, ob der eigene Prozess jetzt unter 32 oder 64-Bit läuft. Dafür müsste man entweder mit konditionalen Compilerdirektiven arbeiten, oder zur Laufzeit ermitteln, ob Windows selbst 32 oder 64 Bit ist.

Uwe Raabe 6. Jun 2017 14:07

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Zitat:

Zitat von Zacherl (Beitrag 1373562)

Hier gibt es jetzt zwei Fälle, in denen die API "false" wird:
  1. 32-Bit Windows -> Eigener Prozess ist zwingend auch 32-Bit
  2. 64-Bit Prozess

Die Originalfrage wird aber genau durch diesen Rückgabewert beantwortet, denn das Programm ist per Vorgabe 32-Bit. Zur Erinnerung:

Zitat:

Zitat von Gerkey (Beitrag 1373506)
Habe Programme in der 32-Bit Version erstellt, die nun auch unter 64-Bit ablaufen sollen, was aber Änderungen u.a. beim Umgang mit einer MSACCESS Datenbank erfordert.
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?


himitsu 6. Jun 2017 14:14

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?
 
Es sagt ja auch "Ich laufe im 32 Bit-Subsystem eines 64 Bit-Windows", also muß es für True zwangsläufig auch ein 32 Bit-Programm sein.
WoW64 = Windows (32) on Windows 64

64 Bit-Programme laufen zwangsläufig in einem 64 Bit-Windows
und 32 Bit-Programme können damit abfragen, ob sie in einem 32 Bit-Windows ober im Subsystem eines 64 Bit-Windows laufen.

Delphi-Quellcode:
{$IF SizeOf(Pointer) = 4}
{$IFDEF CPUX86}
{$IFDEF WIN32}

{$IF SizeOf(Pointer) = 8}
{$IFDEF CPUX64}
{$IFDEF WIN64}
Spaßig wird es, wenn es mal ein 128 Bit-Windows gibt und 32 Bit-Windowse dann auch noch leben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.
Seite 1 von 3  1 23      

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