Использование оператора присваивания - = опасно по двум причинам:
1) Он работает ТОЛЬКО ЕСЛИ установлен атрибут ReadOnly, поэтому предварительно требуется проверка.
2) Он выполняет операцию вычитания, что не является лучшим выбором при работе с двоичными флагами. Операция вычитания работает, если условие 1 (выше) выполняется, но дополнительные операции вычитания изменят другие биты в поле FileAttributes!
Используйте "& = ~ FileAttributes.ReadOnly;" сбросить флаг ReadOnly.
Используйте "| = FileAttributes.ReadOnly;" установить флаг ReadOnly.