I would like to be able to hide/un-hide a file in Windows in C++, but I was concerned about erasing other attributes (like FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_ARCHIVE, ...).
Here is the current code:
//Hiding the file
SetFileAttributes(path, FILE_ATTRIBUTE_HIDDEN);
// Un-Hiding the file
SetFileAttributes(path, FILE_ATTRIBUTE_NORMAL);
This works fine for regular files, but will hiding the file remove a READONLY flag for example? Will unhiding the file remove it?
If yes, I was planning on doing something like this:
//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);
}
Would that work?