【问题标题】:How to find all files, including hidden and system files如何查找所有文件,包括隐藏文件和系统文件
【发布时间】:2011-10-12 15:50:52
【问题描述】:

我需要创建一个目录中文件和子目录的完整列表。

DirectoryInfo.GetFiles() 没有找到所有文件;至少,隐藏文件似乎丢失了。

(权限也可能有问题,因为我无法使用 Windows 资源管理器查看某些目录,即使我以管理员身份运行。例如,无法输入“C:\System Volume Information”。 )

我正在使用 C#,Windows XP Pro

【问题讨论】:

标签: c# .net permissions directory hidden


【解决方案1】:

在这么晚的日期称重,GetFiles 并不总是返回所有文件,我也没有弄清楚为什么。这是一种重现方式(至少在 64 位 Windows 7 Home 上,以管理员身份运行并在 Visual Studio 2010 中使用 C#)。

here 安装 FTDI Drivers EXECUTABLE 安装程序 (http://www.ftdichip.com/Drivers/D2XX.htm)

这将在 \Windows\System32 中安装以下文件:

-ftbusui.dll
-ftcserco.dll
-ftd2xx.dll
-FTLang.dll
-ftserui2.dll

以下代码:

String[] files = Directory.GetFiles(Environment.SystemDirectory, "f*.*", SearchOption.TopDirectoryOnly);

返回 ftd2xx.dll,但不返回其他四个文件。

将 searchPattern 更改为 *.*,或者简单地使用:

GetFiles(Environment.SystemDirectory)

返回 ftd2xx.dll,但不返回其他四个文件。

没有一个文件是隐藏的,所有五个文件都具有相同的所有者和权限。所有五个文件都显示在 Windows 资源管理器和命令提示符窗口中。

其实下面的返回false:

File.Exists(@"c:\Windows\System32\ftbusui.dll")

这四个文件不会显示在 OpenFileDialog 对话框中。以管理员身份运行可执行文件没有任何区别,关闭 UAC 也无济于事。

【讨论】:

  • 我也遇到了这个问题。你找到解决办法了吗?
  • 这只发生在非常特定的文件或广泛的文件中?看起来这可能是 FTDI 驱动程序的问题,试图以类似 rootkit 的方式隐藏驱动程序文件。
【解决方案2】:

正如其他人所说,DirectoryInfo.GetFiles() 获取所有文件。因此,您可能遇到了权限问题。

【讨论】:

    【解决方案3】:

    应该的。尝试在其他目录中搜索,手动创建隐藏文件,看看它是否会在搜索结果集中。

    【讨论】:

      【解决方案4】:

      DirectoryInfo.GetFiles() 返回所有文件(不包括您无权查看的文件)。

      至少它确实包含隐藏文件,如this person who is asking almost exactly the reverse of this question所示。

      您是否有在其他地方出现但不在此列表中的文件的具体示例?

      【讨论】:

      • 这是部分答案,但另请参阅上面 Alex 的关于权限和文件所有权的评论。
      【解决方案5】:

      DirectoryInfo.GetFiles() 返回所有文件,包括隐藏文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 2013-07-30
        相关资源
        最近更新 更多