Chcę sprawdzić, czy istnieje dll w katalogu System32 (Windows 7). Ale nawet jeśli istnieje, FileExists() zwraca false. LoadLibrary zwraca poprawny uchwyt. W tym przypadku chcę tylko sprawdzić, czy pliki istnieją i wizualizować te informacje. Czy masz jakieś wskazówki, aby rozwiązać ten problem?FileExists() zwraca fałsz, nawet jeśli plik istnieje
Odpowiedz
Najprawdopodobniej jest to spowodowane przekierowaniem pliku. Masz maszynę 64-bitową, ale z 32 procesu Delphi, Windows\system32
faktycznie przekierowuje do Windows\Syswow64
. Tak więc, gdy myślisz, że pytasz o istnienie pliku w Windows\system32
, system faktycznie zgłasza istnienie (lub nie) pliku w Windows\Syswow64
.
Jeśli naprawdę potrzebujesz zobaczyć prawdziwy system 64-bitowy32, musisz wyłączyć przekierowanie pliku. Możesz to zrobić za pomocą funkcji Wow64DisableWow64FsRedirection()
. Nie zapomnij go ponownie włączyć za pomocą Wow64RevertWow64FsRedirection()
. Uważaj, że wyłączenie przekierowania ma szeroki zakres efektów i może powodować bardzo dziwne zachowanie, więc należy zachować ostrożność.
To bardziej przypomina to. (No cóż, to i jakaś głupia literówka, oczywiście ...) –
Teraz, kiedy o tym myślę, mam 99% to jest problem. +1, zdecydowanie. –
Tak, prawdopodobnie tak jest, w przeszłości miałem coś podobnego, dziwne było to, że mój całkowity dowódca pokazał mi również przekierowany folder, po tym, jak ktoś powiedział mi, że to dlatego, że jest 32-bitowy, wszystko było jasne. (Nadal możesz wyłączyć przekierowanie tam). W każdym razie wystarczy sprawdzić stronę TC, teraz jest 64-bitowa wersja beta. – balazs
Niezbyt wiele informacji do wykonania, kod, którego używasz może pomóc, ale czy może to być problem 64-bitowy i że dll jest rzeczywiście w folderze SysWOW64? Zobacz here dla dobrego opisu, jak to działa.
I oczywiście +1 również. –
Prawie na pewno nie określasz pełnej lub poprawnej ścieżki względnej pliku w swoim zgłoszeniu FileExists
. LoadLibrary
przeszuka określone lokalizacje (te, w których powinny znajdować się biblioteki dll), ale FileExists
nie będzie. Podaj pełną i poprawną ścieżkę, a FileExists
będzie działać poprawnie.
- 1. Pole Sitecore Field.HasValue zwraca fałsz, nawet jeśli istnieje wartość?
- 2. os.path.isdir() zwraca False, nawet jeśli istnieje folder
- 3. Java - file.length() zwraca, nawet jeśli plik nie jest czytelny.
- 4. Dlaczego Fałsz == Fałsz w [Fałsz] zwraca True?
- 5. file_exists() zwraca wartość false, nawet jeśli plik istnieje (zdalny adres URL)
- 6. Coldfusion 10, IIS 7.5 - Uzyskiwanie 404 nawet jeśli plik istnieje
- 7. json_encode() zwraca fałsz
- 8. string.matches (". *") Zwraca fałsz
- 9. System.IO.File.Exists (@ "C: \ Windows \ System32 \ SnippingTool.exe") zwraca fałsz
- 10. PyODBC: nie można otworzyć sterownika, nawet jeśli istnieje
- 11. Utwórz plik, jeśli plik nie istnieje
- 12. Utwórz plik, jeśli nie istnieje
- 13. Safari pozostaje "ładowanie", gdy window.onbeforeunload zwraca fałsz
- 14. skopiować plik, nawet gdy istnieje docelowy (w Qt)
- 15. Pobierz zawartość adresu URL w PHP, nawet jeśli zwraca 404
- 16. PHP defined() dlaczego zwraca false, nawet jeśli stała jest zdefiniowana?
- 17. TextToSpeech.setEngineByPackageName() zwraca sukces, nawet jeśli pakiet nie jest dostępny
- 18. URLForUbiquityContainerIdentifier zwraca zero, nawet jeśli jest skonfigurowany poprawnie
- 19. laravel Wejście :: hasFile („obraz”) zwraca false, nawet jeśli plik został dodany
- 20. File.exists() zwraca wartość false, gdy plik istnieje
- 21. Android: SQLite, cursor.moveToNext() zawsze zwraca fałsz
- 22. Delphi: jak sprawdzić, czy plik istnieje (ścieżka powyżej 255 znaków)
- 23. prawo sprzężenia, nawet jeśli wiersz na drugiej tabeli nie istnieje
- 24. Jak uwzględnić tylko, jeśli plik istnieje
- 25. Używaj proxy tylko, jeśli plik nie istnieje
- 26. Plik wyjściowy nadpisania ffmpeg, jeśli istnieje
- 27. Jak mogę usunąć plik, tylko jeśli istnieje?
- 28. . Przekierowanie htaccess, jeśli plik nie istnieje
- 29. Skopiuj plik lokalny, jeśli istnieje, używając ansible
- 30. Java FileOutputStream Utwórz plik, jeśli nie istnieje
Zgaduję, że problem "uprawnień". Vista/Windows 7 jest bardzo ochronny, jeśli chodzi o pozwalanie ludziom na błądzenie w \ windowsach :) – paulsm4
@ paulsm4: Nie, to nie może być to. System Windows zawsze pozwoli ci dowiedzieć się, czy plik istnieje, czy nie. –