GetFileAttributes в NTFS - PullRequest
       2

GetFileAttributes в NTFS

0 голосов
/ 29 ноября 2011

Я хочу использовать Windows API для проверки того, что файл / каталог скрыт или нет. GetFileAttributes может быть лучшим выбором. но когда я проверяю FAT "C: \", он возвращает 0x10. Это выглядит хорошо. но в NTFS "C: \" он возвращает 0x16, может быть, это показывает, что атрибут "C: \" S - это "system", "directory" и "hidden". проблема в том, почему возвращение скрыто? на самом деле это не скрыто.

Не могли бы вы дать мне другой API для проверки того, что файл / каталог файловой системы Windows скрыт или нет? Большое спасибо.

1 Ответ

0 голосов
/ 03 декабря 2015

GetFileAttributes имеет БОЛЬШУЮ ОШИБКУ, чтобы увидеть его, попробуйте этот простой код:

ShowMessage(IntToStr(GetFileAttributes(PChar('C:\.MyNonExistantFile'))));

Это показывает, что GetFileAttributes возвращает 32 в десятичном виде (поскольку файл не существует, это ошибка, правильное возвращаемое значение должно быть -1).

Также вы можете попробовать это с:

CreateDir('C:\.Anything');
ShowMessage(IntToStr(GetFileAttributes(PChar('C:\.Anything\MyNonExistantFile.TXT'))));

Это связано с файлами и каталогами, начинающимися с символа точки (.).

Примечание: FileExists также возвращает true в этих ситуациях (а файл не существует).

...