AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Windows 7 x64 - FileExist fehler

Ein Thema von Sereby · begonnen am 21. Mai 2009 · letzter Beitrag vom 22. Mai 2009
Antwort Antwort
Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#1

Windows 7 x64 - FileExist fehler

  Alt 21. Mai 2009, 21:05
Hiho,

ich musste leider eben feststellen, dass unter Windows 7 x64 ein blöder Bug existiert mit Delphi Programmen die die FileExist Funktion benutzen
wenn ich versuche folgenden einfachen Befehl auszuführen:
Code:
if FileExists('C:\Windows\system32\java.exe') then
  Showmessage('Jupp')
else
  Showmessage('Blah');
Die Datei Existiert 100000% aber die Funktion liefert IMMER False zurück.
Kennt da jemand ne lösung?

ExtraInfos:
- Ich habe UAC auch deaktiviert -> selbes Problem
- Das Programm wurde mit Delphi 2009 erstellt
- Auch wenn ich das Programm mit Admin-Rechten starte kommt dabei False raus!
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Windows 7 x64 - FileExist fehler

  Alt 21. Mai 2009, 21:11
Das ist kein Bug, sondern ein Feature. Wenn Deine Win32 Applikation auf \Windows\System32 zugreifst, landen Deine Zugriff nicht in System32 sondern in SysWOW64. Nähere Details inkl. einer Möglichkeit als Anwendung diese Virtualisierung abzuschalten, gibts ebenfalls auf der oben verlinkten Seite.
Fridolin Walther
  Mit Zitat antworten Zitat
Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#3

Re: Windows 7 x64 - FileExist fehler

  Alt 21. Mai 2009, 21:48
dankeschön
so müsste man immer hilfe erhalten können
sehr schnell und kompetent! danke!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.340 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

Re: Windows 7 x64 - FileExist fehler

  Alt 22. Mai 2009, 05:35
Das Selbe gilt für WinXP x64, Windows Server 2003 x64 und Vista x64
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Windows 7 x64 - FileExist fehler

  Alt 22. Mai 2009, 09:30
Aber da stellt sich mir jetzt die Frage, wie ich dann dennoch an den x64 system32 (was für ein geiler Name ^^ ) komme?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.340 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

Re: Windows 7 x64 - FileExist fehler

  Alt 22. Mai 2009, 09:31
Der wird nicht verwendet
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Windows 7 x64 - FileExist fehler

  Alt 22. Mai 2009, 09:45
Zitat von mkinzler:
Der wird nicht verwendet
Natürlich wird der verwendet... Ein kleiner Eintrag in der hosts, und der wird auch wirksam... Also eindeutig: Wird verwendet.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.104 Beiträge
 
Delphi XE4 Professional
 
#8

Re: Windows 7 x64 - FileExist fehler

  Alt 22. Mai 2009, 09:53
Hallo,

Zitat:
Aber da stellt sich mir jetzt die Frage, wie ich dann dennoch an den x64 system32 (was für ein geiler Name ^^ ) komme?
steht doch im Link drin, zumindestens ab Vista.

(%windir%\Sysnative)


Heiko
Heiko
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Windows 7 x64 - FileExist fehler

  Alt 22. Mai 2009, 12:28
Da einige zu faul sind sich den von mir verlinkten MSDN Artikel anzuschauen, hier nochmal die Infos zusammengefasst:

Als Win32 Anwendung werden auf einem x64 System (egal ob XP, 2003, Vista, 2008, 7) alle Zugriffe auf %windir%\system32 nach %windir%\syswow64 umgeleitet. Ausgenommen davon sind folgende Unterverzeichnisse von %windir%\system32:

%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

Darüber hinaus gibt es zwei Methoden um als Win32 Anwendung an das "richtige" System32 Verzeichnis zu gelangen. Ab Windows Vista gibt es zum einen den virtuellen Ordner %windir%\sysnative. Falls eine Anwendung auf diesen Ordner zugreift, landet es automatisch im nativen System32 Ordner. Diese Methode funktioniert aber erst ab Windows Vista. Ab Windows XP dagegen funktioniert die API MSDN-Library durchsuchenWow64DisableWow64FsRedirection. Mit dieser API kann ein Thread (!!) die Dateisystemvirtualisierung für sich selbst abschalten. Danach landen also alle Zugriffe auf %windir%\system32 auch wirklich dort.

Hoffe damit alle Unklarheiten beseitigt zu haben.
Fridolin Walther
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf