16.35.32. Кодирование атрибутов файла

Атрибуты файла являются битовой маской, в которой каждый бит кодирует определенный атрибут.
 
Оперировать с битами несложно при помощи операций OR и AND.
Основные атрибуты файлов и каталогов: 
Бит 0 (вес 1 = $01) - атрибут ReadOnly ("только чтение")
Бит 1 (вес 2 = $02) - атрибут Hidden ("скрытый")
Бит 2 (вес 4 = $04) - атрибут SysFile ("системный")
Бит 3 (вес 8 = $08) - атрибут VolumeID ("метка тома")
Бит 4 (вес 16 = $10) - атрибут Directory ("каталог")
Бит 5 (вес 32 = $20) - атрибут Archive ("архивирован")
Бит 6 (вес 64 = $40) - атрибут SymLink ("символьная ссылка")
 
Таким образом, если например требуется задать атрибуты "только чтение" и "архивирован", то 1 or 32 = 33. Аналогично с проверкой атрибутов - несложно проверять один или несколько интересующих нас битов при помощи оператора AND, например:
 
var
  FAttr : integer;
begin
  FAttr := GetAttr('%System32%\');
  if FAttr <> $FFFFFFFF then
    if (FAttr and 79) > 0 then
      AddToLog('У системной папки подозрительные атрибуты');
end.
В примере использовались: AddToLog, GetAttr 
 
В данном примере битовая маска 79 (01001111) выделяет биты 0,1,2,3,6 для проверки, и если хотя бы один из этих битов установлен, то выводится сообщение о подозрительных атрибутах.
 
Более подробную информация по атрибутам можно получить в MSDN - https://docs.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants