如何查找所有文件,包括隐藏文件和系统文件

时间:2011-07-25 14:30:29

标签: c# .net permissions directory hidden

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

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

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

我正在使用C#,Windows XP专业版

5 个答案:

答案 0 :(得分:7)

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

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

您是否有一个特定的文件示例,该文件出现在其他地方但不在此列表中?

答案 1 :(得分:3)

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

here安装FTDI驱动程序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对话框中。以Admin身份运行可执行文件没有任何区别,关闭UAC也无济于事。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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