gpt4 book ai didi

c# - 使用 File.Exists 检查文件是否存在于 64 位系统上

转载 作者:可可西里 更新时间:2023-11-01 08:06:04 24 4
gpt4 key购买 nike

我的操作系统是 64 位的,文件夹 C:\Windows\SysWOW64 中有一个文件 111.txt,但在 c:\windows\system32 中没有该文件

但是下面的代码返回true

file = @"C:\Windows\System32\111.txt";    
bool bExist = System.IO.File.Exists(file);

不知道为什么?以及如何检查system32下是否有文件111.txt而不是SysWoW64?

最佳答案

由于许多应用程序已将 System32 目录名称硬编码到路径中,MS 将 64 位系统文件放在那里而不是“System64”目录中。 32 位版本现在进入“SysWOW64”目录(这很困惑)。但为了防止破坏 32 位程序,系统默认对尝试访问“System32”目录的 32 位进程执行重定向。在大多数情况下,只要 32 位应用程序尝试访问 %windir%\System32,访问就会重定向到 %windir%\SysWOW64。

绕过此重定向的一个简单方法是使用 %windir%\Sysnative 而不是 %windir%\System32。 Win64 会将该目录“重定向”到实际的 System32 目录。

您可以使用 Wow64DisableWow64FsRedirection() API 来完全禁用此重定向。参见 http://msdn.microsoft.com/en-us/library/aa384187.aspx了解详情。

关于c# - 使用 File.Exists 检查文件是否存在于 64 位系统上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2160699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com