我需要在目录中创建文件和子目录的完整列表。如何查找所有文件,包括隐藏文件和系统文件
DirectoryInfo.GetFiles()
找不到所有文件;至少隐藏的文件似乎缺失。
(可能还存在权限问题,因为我无法使用Windows资源管理器查看某些目录,即使我以管理员身份运行,例如无法输入“C:\ System Volume Information” 。)
我使用C#中,Windows XP专业版
我需要在目录中创建文件和子目录的完整列表。如何查找所有文件,包括隐藏文件和系统文件
DirectoryInfo.GetFiles()
找不到所有文件;至少隐藏的文件似乎缺失。
(可能还存在权限问题,因为我无法使用Windows资源管理器查看某些目录,即使我以管理员身份运行,例如无法输入“C:\ System Volume Information” 。)
我使用C#中,Windows XP专业版
DirectoryInfo.GetFiles()
返回全部文件(不包括那些您没有权限查看的文件)。
至少它确实包括隐藏文件,如this person who is asking almost exactly the reverse of this question所示。
你有没有出现在其他地方但不在此列表中的文件的特定示例?
这是一个部分答案,但也请参阅上面的Alex关于权限和文件所有权的评论。 –
应该是的。尝试在其他目录中搜索,手动创建隐藏文件并查看它是否在搜索结果集中。
DirectoryInfo.GetFiles()
返回所有文件,包括隐藏文件。
正如其他人所指出的,DirectoryInfo.GetFiles()
获取所有文件。因此,看起来你可能会遇到许可问题。
在这么晚的日子里称重,GetFiles并不总是返回所有文件,我还没有弄清楚为什么。这里有一种方法来重现(至少在64位Windows 7 Home上,以管理员身份运行并在Visual Studio 2010中使用C#)。
从here (http://www.ftdichip.com/Drivers/D2XX.htm)
此安装FTDI驱动程序可执行安装程序将在\ 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")
和四个文件没有在打开文件对话框对话框中。作为管理员运行可执行文件没有区别,关闭UAC并没有帮助。
我也遇到过这个问题。你找到了解决方案吗? –
这只发生在非常特定的文件或各种各样的文件?看起来这可能是FTDI驱动程序的一个问题,试图以类似rootkit的方式隐藏驱动程序文件。 – NirIzr
无法查看“C:\ System Volume Inforamtion”文件夹,因为它仅分配给SYSTEM用户。为了看到它,你需要掌握它的所有权。但是,出于安全原因,不建议这样做。 –
[C#的可能重复 - 获取不包含那些隐藏的文件的列表](http://stackoverflow.com/questions/2418270/c-sharp-get-a-list-of-files-excluding-those-that - 隐藏) – TarmoPikaro