Атрибуты файла в C#
Атрибуты - битовая маска FileAttributes. Новый флаг добавляют побитовым ИЛИ к уже прочитанной маске.
Методы File.GetAttributes и File.SetAttributes читают и записывают
маску целиком. Перед изменением исходное значение сохраняют,
чтобы потом вернуть остальные флаги.
Атрибут Hidden только прячет имя в проводнике. Пометим файл только для чтения и проверим флаг. Затем прежняя маска возвращается на место, иначе файл с флагом ReadOnly трудно удалить:
string path = Path.Combine(Path.GetTempPath(), "attr-epsilon.txt");
File.WriteAllText(path, "x");
FileAttributes attrs = File.GetAttributes(path);
File.SetAttributes(path, attrs | FileAttributes.ReadOnly);
Console.WriteLine(File.GetAttributes(path).HasFlag(FileAttributes.ReadOnly)); // выведет True
File.SetAttributes(path, attrs);
File.Delete(path);
Создайте файл "policy.txt" во временном каталоге, запомните его признаки, добавьте режим только чтения и выведите True, если новая маска отличается от исходной.