【问题标题】:Missing directory and file info缺少目录和文件信息
【发布时间】:2015-05-18 18:51:26
【问题描述】:

以下内容未返回文件和目录的完整列表:

IEnumerable<FileSystemInfo> files = new DirectoryInfo("C:\\Windows\\System32\\drivers").EnumerateFileSystemInfos("*", SearchOption.AllDirectories);

应用程序以管理员身份运行。没有额外的文件过滤器驱动程序。

例如,如果我运行:

foreach (FileSystemInfo file in files)
{
    Console.WriteLine(file.Name);
}

我明白了:

en-US                                             
gm.dls                                            
gmreadme.txt                                      
UMDF                                              
wimmount.sys
bfe.dll.mui                                       
ndiscap.sys.mui                                   
pacer.sys.mui                                     
qwavedrv.sys.mui                                  
scfilter.sys.mui                                  
tcpip.sys.mui 

我不知道为什么它不会输出所有目录和文件。

【问题讨论】:

    标签: c# ienumerable enumerate directoryinfo filesysteminfo


    【解决方案1】:

    在 64 位机器上,文件系统(和注册表)的某些部分是虚拟化的。在我看来,您在 64 位机器上运行,并且您在构建中以 x86(或具有“首选 32 位”设置的 AnyCPU)为目标。在 64 位机器上的 32 位进程中,C:\Windows\System32 被重定向到 C:\Windows\SysWOW64。如果您查看您的 C:\Windows\SysWOW64\drivers 文件夹,您将看到您在输出中看到的确切文件。

    【讨论】:

    • 谢谢!后续问题,有没有办法在保持 x86 兼容性的同时直接访问 System32?无需为每个架构构建?
    • 在我的脑海中,我不知道.NET。这是 an MSDN page 的原始 Win32 概念。
    • 感谢您的时间和帮助!
    • 我想指出的是,我发现 C:\Windows\Sysnative 将返回机器的本机 System32,而不管架构如何。
    猜你喜欢
    • 2017-03-26
    • 2016-05-28
    • 1970-01-01
    • 2010-10-11
    • 2012-05-27
    • 2016-09-22
    • 2021-12-20
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多