Como ocultar / un-ocultar um arquivo sem apagar outros atributos em C ++ no Windows

Eu gostaria de ser capaz de esconder / un-ocultar um arquivo no Windows em C ++, mas eu estava preocupado com a exclusão de outros atributos (como FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_ARCHIVE, ...).

Aqui está o código atual:

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

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

Isso funciona bem para arquivos regulares, mas vai esconder o arquivo remover um sinalizador READONLY por exemplo? Vai mostrar o arquivo para removê-lo?

Se sim, eu estava planejando fazer algo assim:

<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>

Isso funcionaria?

questionAnswers(2)

yourAnswerToTheQuestion