我需要获取 Windows 文件夹中项目(文件夹和文件)的数量。如果我应该包含隐藏的项目,我可以根据条件轻松地做到这一点。但是在我的程序中,我想获取用户可见的项目数!即,如果隐藏的项目在文件夹中可见,则应将其包括在计数中。如果隐藏的项目不可见,则不应包含它。
那么我怎么知道 Windows 机器上是否设置了“显示隐藏文件”属性。换句话说,有没有一种方法可以找到文件或目录是否对用户“真正隐藏”(视觉上)?
更新:我将重新打开这个问题。虽然这里的原始答案回答了我的问题,但在某种程度上它并不是万无一失的。
这是新的场景:
C驱动器中的某些文件(还没有其他任何地方)在视觉上是隐藏的,尽管它们的隐藏属性是假的(或未选中),奇怪的是。这些文件在可见时(从文件夹选项中)看起来像其他隐藏文件一样苍白,当我们在文件夹选项中设置“不显示隐藏文件”时(就像任何其他普通隐藏文件一样),它们会在视觉上隐藏。
我看到的机器中的那些文件是autoexec.bat
和config.sys
. C:\
我在 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。我正在寻找一个好的入门者..
谢谢..