.net - 如何查找 Windows 文件夹中的项目是否真的对用户隐藏?

标签 .net windows directory explorer file-attributes

我需要获取 Windows 文件夹中项目(文件夹和文件)的数量。我可以根据条件轻松地完成是否应该包含隐藏项目。但是在我的程序中,我想获取用户可见的项目数!即,如果隐藏的项目在文件夹中可见,那么它应该包括在计数中。如果隐藏的项目不可见,则不应包括在内。

那么我怎么知道 Windows 机器上是否设置了“显示隐藏文件”属性。换句话说,有没有一种方法可以确定文件或目录是否对用户“真正隐藏”(在视觉上)??

更新:我将重新打开这个问题。这里的原答案虽然回答了我的问题,但一定程度上也不是万无一失的。

这是新场景:

C 盘中的某些文件(还不是其他任何地方)在视觉上是隐藏的,尽管它们的隐藏属性是 false(或未选中),奇怪地。这些文件在可见时(从文件夹选项)看起来像其他隐藏文件一样苍白,当我们在文件夹选项中设置“不显示隐藏文件”时,它们会在视觉上隐藏(就像任何其他普通隐藏文件一样)。

在我的机器中,我看到的那些文件是 C:\ 中的 autoexec.batconfig.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/

相关文章:

perl - 如何在 Perl 中递归复制目录并过滤文件名?

file - .empty 文件有什么用?

.net - 当从表单中删除另一个控件中引用的控件时,获取设计时通知

c# - CLR 类型的 Object.Equals(objA, objB)、objA.Equals(objB) 和 objA == objB 之间的区别?

c# - 访问 UWP 页面之间传递的参数

c++ - MinGW,g++,winapi,winsdk,迷茫中

php - 使路径在 Linux 和 Windows 上都有效

c# - 如何使用 C++/CLI Wrapper 将变量参数从托管传递到非托管?

c# - 如何计算标准差[数组]

eclipse - 有没有办法展开 Eclipse 项目 View 和搜索结果中的所有文件夹?