c# Directory.GetFiles() - NTFS上的多个文件

本文关键字:文件 NTFS Directory GetFiles | 更新日期: 2023-09-27 18:03:33

像这样使用System.IO.Directory.GetFiles()

string[] fileFullPaths1 = Directory.GetFiles(@"C:'Windows'System32", "mycompanyname.scr");
string[] fileFullPaths2 = Directory.GetFiles(@"C:'Windows'SysWOW64", "mycompanyname.scr");

我找到了以下两个文件:

  • C: ' Windows ' System32系统' mycompanyname.scr
  • C: ' Windows ' SysWOW64 ' mycompanyname.scr

Windows资源管理器无法看到C:'Windows'System32中的目录,命令行dir也无法看到。此外,我自己搜索MFT的代码显示只有一个mycompanyname实例。MFT中的scr及其父目录记录号指向C:'Windows'SysWOW64,所以我不认为硬链接混淆了这个问题。我还检查了两个目录都不是连接点。

有人能解释一下这是为什么吗?

c# Directory.GetFiles() - NTFS上的多个文件

WOW64Windows-on-Windows 64-bit

SysWOW64用于放置32位程序。
System32用于放置64位程序。

对于32位程序,C:'Windows'System32将始终重定向到C:'Windows'SysWOW64
对于64位程序,如果file不存在,C:'Windows'System32将重定向到C:'Windows'SysWOW64

你可以把你的程序编译成x86,然后再试一次