Je veux vérifier si une DLL dans le répertoire System32 (Windows 7) existe. Mais même s'il existe, FileExists() renvoie false. LoadLibrary renvoie un handle valide. Dans ce cas, je veux seulement vérifier, si les fichiers existent et visualiser cette information. Avez-vous des conseils pour résoudre ce problème?FileExists() renvoie la valeur false, même si le fichier existe
Répondre
Il s'agit probablement d'une redirection de fichier. Vous avez une machine 64 bits mais à partir du processus 32 Delphi, Windows\system32
redirige actuellement vers Windows\Syswow64
. Donc, quand vous pensez que vous demandez l'existence d'un fichier dans Windows\system32
, le système signale réellement l'existence (ou pas) d'un fichier dans Windows\Syswow64
.
Si vous avez vraiment besoin de voir dans le vrai 64 bits system32 alors vous devez désactiver la redirection de fichiers. Vous pouvez le faire avec la fonction Wow64DisableWow64FsRedirection()
. Ne pas oublier de le rallumer avec Wow64RevertWow64FsRedirection()
. Méfiez-vous que la désactivation du redirecteur a des effets étendus et peut entraîner un comportement très étrange, faites-le avec précaution.
Cela ressemble plus à ça. (Eh bien, ceci et une faute de frappe, bien sûr ...) –
Maintenant que j'y pense, je suis 99% c'est le problème. +1, définitivement. –
Oui, probablement c'est le cas, dans le passé j'avais quelque chose de similaire, l'étrange était que mon commandant total m'a montré le dossier redirigé aussi, après quelqu'un m'a dit que c'est 32 bits tout était clair. (Vous pouvez toujours désactiver la redirection Là). Quoi qu'il en soit, il suffit de vérifier le site de TC, maintenant il y a une version bêta 64 bits. – balazs
Pas beaucoup d'informations pour continuer, le code que vous utilisez peut-être aider, mais cela pourrait-il être un problème de 64 bits et que la DLL est réellement dans le dossier SysWOW64? Voir here pour une bonne description de la façon dont cela fonctionne.
Et un +1 ici aussi, bien sûr. –
Vous ne spécifiez certainement pas le chemin d'accès relatif complet ou valide du fichier dans votre appel FileExists
. LoadLibrary
recherchera certains emplacements (ceux où les DLL doivent résider) pour vous, mais pas FileExists
. Fournir le chemin complet et correct et FileExists
fonctionnera correctement.
- 1. Renvoie la valeur false si un appel renvoie la valeur false dans une fonction
- 2. System.IO.File.Exists() renvoie la valeur false
- 3. l'accès renvoie toujours -1, même si le fichier existe
- 4. ASP.NET File.Exists renvoie false lorsque le fichier existe
- 5. string.matches (". *") Renvoie la valeur false
- 6. File.Exists ("SDF File Path") renvoie une valeur FALSE lors des tests unitaires, même si elle existe dans le répertoire d'exécution
- 7. nant directory :: exists retourne false même si le répertoire existe
- 8. jQuery renvoie la valeur true même si false avec la liste de sélection dupliquée
- 9. session.isOpened() renvoie la valeur false même si la connexion à Facebook est réussie
- 10. Android: SQLite: Si isDatabaseIntegrityOK() renvoie la valeur false
- 11. getElementById() renvoie null même si l'élément existe
- 12. IsPostBack renvoie toujours la valeur false
- 13. mon instruction "if" renvoie false même si c'est vrai, pourquoi?
- 14. vérifier si le fichier existe
- 15. Java FileNotFoundException même si le fichier existe
- 16. Java - file.length() renvoie même si le fichier n'est pas lisible
- 17. Formulaire Soumet même via jQuery renvoie false
- 18. externalContext.getSession (false) renvoie la valeur null
- 19. SKPaymentQueue canMakePayments renvoie toujours la valeur false
- 20. ABGroupAddMember renvoie la valeur false. Pourquoi?
- 21. File.Exists() renvoie la valeur false dans l'événement Deleted de FileSystemWatcher
- 22. iPhone si le fichier existe numéro
- 23. file_exists() renvoie false, même pour les chemins qui existent
- 24. WL.Client.Push.isSubscribed() renvoie false si l'application est rechargée
- 25. Le formulaire Drupal continue d'être soumis même si la fonction submitQ de jQuery renvoie false;
- 26. getPlatformIDs() renvoie -1001 même si nvidia.icd existe et contient 'libcuda.so'
- 27. Pourquoi (Si false renvoie "true") ... retourne true?
- 28. is_int renvoie double même si la valeur est un entier
- 29. La comparaison de deux instantanés du même objet activeecord renvoie false si attr_accessible est présent. Ruby
- 30. Vérifiez si le fichier existe même sur le chemin
Je devine le problème des "permissions". Vista/Windows 7 est très protecteur sur le fait de laisser les gens bouger dans \ windows :) – paulsm4
@ paulsm4: Non, ça ne peut pas être ça. Windows vous permet toujours de savoir si un fichier existe ou non. –