Как скрыть / отменить скрытие файла, не стирая другие атрибуты в C ++ в Windows

Я хотел бы иметь возможность скрыть / отменить скрытие файла в Windows в C ++, но я был обеспокоен удалением других атрибутов (таких как FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_ARCHIVE, ...).

Вот текущий код:

<code>//Hiding the file
SetFileAttributes(path, FILE_ATTRIBUTE_HIDDEN);

// Un-Hiding the file
SetFileAttributes(path, FILE_ATTRIBUTE_NORMAL);
</code>

Это нормально работает для обычных файлов, но удалит ли скрытый файл флаг READONLY, например? Будет ли удаление файла скрывать?

Если да, я планировал сделать что-то вроде этого:

<code>//Hiding the file
int attr = GetFileAttributes(path);
if ((attr | FILE_ATTRIBUTE_HIDDEN) == 0) {
    SetFileAttributes(path, attr & FILE_ATTRIBUTE_HIDDEN);
}

//Unhiding the file
int attr = GetFileAttributes(path);
if ((attr | FILE_ATTRIBUTE_HIDDEN) == FILE_ATTRIBUTE_HIDDEN) {
    SetFileAttributes(path, attr & FILE_ATTRIBUTE_HIDDEN);
}
</code>

Будет ли это работать?

Ответы на вопрос(2)

Ваш ответ на вопрос