Мне нужно получить количество элементов (папок и файлов) в папке Windows. Я могу легко сделать это в зависимости от условий, если я должен включить скрытые элементы или нет. Но в моей программе я хочу получить количество элементов, видимых пользователю! то есть если скрытые элементы визуально видны в папке, то они должны быть включены в счет. Если скрытые предметы не видны, то они не должны быть включены.
Так как я могу узнать, установлено ли свойство «показывать скрытые файлы» на компьютере с Windows. Другими словами, есть ли способ узнать, действительно ли файл или каталог «скрыт» (визуально) от пользователя ??
Обновление: Я собираюсь вновь открыть этот вопрос. Хотя оригинальные ответы здесь ответили на мой вопрос, в определенной степени это не надежно.
Вот новый сценарий:
Некоторые файлы на диске C (еще нигде больше) визуально скрыты , хотя их скрытый атрибут имеет значение false (или не проверено), странно . Эти файлы выглядят бледными, как и другие скрытые файлы, когда они становятся видимыми (из параметров папки), и они визуально скрываются , когда мы устанавливаем «не показывать скрытые файлы» в параметрах папки (как и любой другой обычный скрытый файл).
Эти файлы в моей машине, как я вижу, 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;
Так что я думаю, что единственный правильный способ - вызвать API-интерфейс оболочки. Я ищу хороший стартер ..
Спасибо ..