我需要获取 Windows 文件夹中项目(文件夹和文件)的数量。我可以根据条件轻松地完成是否应该包含隐藏项目。但是在我的程序中,我想获取用户可见的项目数!即,如果隐藏的项目在文件夹中可见,那么它应该包括在计数中。如果隐藏的项目不可见,则不应包括在内。
那么我怎么知道 Windows 机器上是否设置了“显示隐藏文件”属性。换句话说,有没有一种方法可以确定文件或目录是否对用户“真正隐藏”(在视觉上)??
更新:我将重新打开这个问题。这里的原答案虽然回答了我的问题,但一定程度上也不是万无一失的。
这是新场景:
C 盘中的某些文件(还不是其他任何地方)在视觉上是隐藏的,尽管它们的隐藏属性是 false(或未选中),奇怪地。这些文件在可见时(从文件夹选项)看起来像其他隐藏文件一样苍白,当我们在文件夹选项中设置“不显示隐藏文件”时,它们会在视觉上隐藏(就像任何其他普通隐藏文件一样)。
在我的机器中,我看到的那些文件是 C:\
中的 autoexec.bat
和 config.sys
。我在 Windows XP 机器和 Windows 7 机器上找到了这个。有没有办法识别这些文件?基本上我试图获取目录中可见(视觉上)文件的数量,而我的应用程序在尝试获取 C:\
中的文件数量时失败。发生的事情是应用程序对这两个文件进行计数(因为它的属性未隐藏),但从视觉的角度来看,它们是正常隐藏的,如下所示:
string[] f = Directory.GetFiles(path);
int count = 0;
foreach (string s in f)
{
FileInfo i = new FileInfo(s);
if ((i.Attributes & FileAttributes.Hidden) == 0)
count++;
}
return count;
所以我认为唯一正确的方法是调用 Shell API。我正在寻找一个好的入门者..
谢谢..
最佳答案
Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
中有一个注册表项用于检查关于“显示隐藏文件”的全局标志 - 请参阅 http://www.pctools.com/guides/registry/detail/1007/
编辑:
请注意,还有另一个关于“显示系统文件”的设置,称为 ShowSuperHidden
关于.net - 如何查找 Windows 文件夹中的项目是否真的对用户隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537647/