![]() |
Probleme mit 64Bit Erkennung des OS
Hallo zusammen,
ich benutze die Funktion IsWow64 aus diesen ![]() Woran könnte es liegen, dass ein 64Bit-Programm welches mit Delphi XE2 erstellt wurde, mit der Funktion IsWow64 auf dem einen PC funktioniert und auf dem anderen nicht ? Wie gesagt, es gibt keinen Fehler oder sonstigen Hinweis. Auf PC1 liefert mir die Funktion True zurück und auf PC2 liefert mir die Funktion False zurück. |
AW: Probleme mit 64Bit Erkennung des OS
Ist für die Exe evtl auf dem anderen PC ein Kompatiblitätsmodus eingestellt?
|
AW: Probleme mit 64Bit Erkennung des OS
Hallo Bernhard,
danke für Deine Antwort. Nicht das ich wüsste, da ich die erstellte EXE einfach von meiner Platte auf einen USB-Stick kopiert habe und dann vom USB-Stick auf dem PC2 ausgeführt habe. Edit: Ich habe jetzt nochmal, mein Programm auf PC1 ausprobiert. Jetzt gibt er mir den gleichen Wert wie auf PC2 aus. Alles irgendwie misteriös. :gruebel: Ich könnte schwören, dass er gestern Abend noch am PC1 True als Rückgabewert hatte. Edit2: Wer lesen kann ist klar im Vorteil. Hier die Erklärung : Zitat:
|
AW: Probleme mit 64Bit Erkennung des OS
Kompatibilitätsmodus sollte eigentlich kein Problem sein, denn in einem 64 Bit Prozess sollte IsWow64Process immer True False liefern, da es so oder so ein 64 Bit-Prozess bleiben wird und demnach auch immer nur in einem 64 Bit-OS laufen kann.
Bei einem 32 Bit-Programm könnte es anders sein, entweder es weiß daß es in einem 64 Bit-OS läuft oder ihm wird über den Kompatibilitätsmodus vorgegaugelt, daß es es eigentlich in einem 32 Bit-OS liefe. |
AW: Probleme mit 64Bit Erkennung des OS
Zitat:
|
AW: Probleme mit 64Bit Erkennung des OS
Kompatibilitätsmodus?
IsWow64Process gibt an, daß der Prozess in einem 64 Bit-OS läuft. Ups nee, es war genau andersrum. Es ist dann immer False. :oops: OK, also IsWow64Process gibt quasi an, daß der Prozess in einem OS läuft, welches nicht seiner Bitbreite entspricht. Theoretisch, wäre IsWow64Process in der 64 Bit-API sinnlos, genauso wie in der API eines 32 Bit-OS, aber da gibt es das ja dennoch, damit Code kompatibel bleibt. Aber wie gesagt, bei einem 64 Bit-Programm sollte es keinen Unterschied machen und immer True ähhh False liefern. :angle: Bleiben dann wohl nur 2 Möglichkeiten: - Bug im OS und in dessen Implementierung. (müßte man im Debugger > CPU-Ansicht < mitbekommen, denn in der Funktion sollte einfach nur das Regiater RAX auf 0 gesetzt werden) - Fehler in der Implementation (aber die sieht eigentlich OK aus) |
AW: Probleme mit 64Bit Erkennung des OS
Anscheinend ist es von der WinAPI so vorgegeben. Siehe
![]() |
AW: Probleme mit 64Bit Erkennung des OS
Bei einem Bug der WinAPI könnte man es eventuell über
![]() |
AW: Probleme mit 64Bit Erkennung des OS
32 Bit Exe, 32-Bit OS: WOW64 -> False
64 Bit Exe, 32-Bit OS: - 32 Bit Exe, 64-Bit OS: WOW64 -> True 64 Bit Exe, 64-Bit OS: WOW64 -> False Aber man weiß ja, ob man eine 64-Bit oder 32-Bit Anwendung compiliert hat. |
AW: Probleme mit 64Bit Erkennung des OS
Das schon, aber nun denk dir eine Komponente, die jemand nicht nur für sich alleine verwenden möchte, welche aber als 32 und 64 Bit kompiliert werden könnte.
OK, man könnte alles mit Compilerschaltern vollpappen, aber theoretisch wäre es hier nicht nötig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 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