我想检查System32目录(Windows 7)中是否存在dll。但即使存在,FileExists()也会返回false。 LoadLibrary返回一个有效的句柄。 在这种情况下,我只想检查文件是否存在并可视化这些信息。 你有任何提示来解决这个问题吗?FileExists()返回false,即使文件存在
回答
这很可能是文件重定向。你有一个64位的机器,但是从32个Delphi过程中,Windows\system32
实际上重定向到Windows\Syswow64
。因此,当您认为您要求存在Windows\system32
中的文件时,系统实际上报告Windows\Syswow64
中文件的存在(或其他方式)。
如果您确实需要查看真正的64位system32,那么您需要禁用文件重定向。你可以用Wow64DisableWow64FsRedirection()
函数来做到这一点。不要忘记用Wow64RevertWow64FsRedirection()
重新开启它。请注意,禁用重定向器具有广泛的影响,并可能导致非常奇怪的行为,因此请谨慎行事。
这更像它。 (嗯,这个和一些愚蠢的错字,当然......) –
现在我想到了,我99%是这个问题。 +1,绝对是。 –
是的,可能是这样的,过去我有类似的东西,奇怪的是我的总指挥官也给我看了重定向的文件夹,有人告诉我这是因为它是32位,一切都很清楚(你仍然可以禁用重定向那里)。无论如何,只是检查了TC网站,现在有一个64位测试版。 – balazs
你几乎肯定没有在你的FileExists
调用中指定文件的完整或有效的相对路径。 LoadLibrary
会搜索某些位置(dll预计驻留的位置),但FileExists
不会。提供完整且正确的路径,并且FileExists
将正常工作。
- 1. 即使文件存在,symfony也存在返回false?
- 2. os.path.isdir()即使在文件夹存在时也会返回False
- 3. file.delete()返回false,即使文件可写
- 4. File.exist?始终返回false,即使文件不存在
- 5. 即使文件存在,file.exists()方法也会返回false
- 6. Imagejpeg返回false但文件存在
- 7. file_exists()返回false,但该文件存在
- 8. 当文件存在时,File.Exists返回false
- 9. 文件存在总是返回false
- 10. asp fileExists always returns false
- 11. Ping返回false即使网站在线
- 12. 即使文件存在于我的linux上,php file_exists也会返回false
- 13. 即使驱动器存在,powershell test-path也会返回false
- 14. 即使目录存在,nant directory :: exists也会返回false
- 15. exif_read_data()即使元数据存在于jpeg中也会返回false
- 16. Laravel输入:: hasFile(“图像”)返回false,即使文件被上传
- 17. 焦点即使在事件返回false(取消事件)去除
- 18. Rapidjson:doc.IsObject()在解析后返回false,即使doc.GetType()返回kObjectType
- 19. 文件是在返回false的文件
- 20. 页面刷新即使返回false
- 21. 即使是dir,is_dir也会返回false?
- 22. 循环,即使应该返回false
- 23. password_verify即使正确返回false
- 24. 即使附件存在,Exchange EWS的“HasAttachment”属性也会返回False
- 25. Model :: save()返回false,即使所有数据都正确保存
- 26. 为什么返回false即使执行存储过程
- 27. Contains()返回false,即使它应该返回true
- 28. 即使返回false,SQL也会返回true
- 29. C#File.Exist(File_Path)即使File_Path为true,文件也存在,并且我有权访问该文件,但返回false
- 30. Tensorflow:tf.gfile.Exist和Env :: FileExists返回True,空文件名
我猜“权限”问题。 Vista/Windows 7对于让人们在\ windows :)中非常保护:) – paulsm4
@ paulsm4:不,那不可能。 Windows会一直让你知道文件是否存在。 –