Я понимаю, что ofstream
не работает в скрытом файле Windows 7.
Вот код быстрого теста.
#include <fstream>
#include <iostream>
#include <tchar.h>
#include <windows.h>
int main() {
{
std::ifstream file2(_T("c:\\a.txt"));
if (file2.is_open()) {
std::cout << "ifstream open" << std::endl;
} else {
std::cout << "ifstream not open!" << std::endl;
}
}
// SetFileAttributes(_T("c:\\a.txt"), FILE_ATTRIBUTE_NORMAL);
SetFileAttributes(_T("c:\\a.txt"), FILE_ATTRIBUTE_HIDDEN);
{
std::ofstream file(_T("c:\\a.txt"));
if (file.is_open()) {
std::cout << "ofstream open" << std::endl;
} else {
std::cout << "ofstream not open!" << std::endl;
}
}
getchar();
}
Вот вывод, который я получаю
ifstream open
ofstream not open!
Если я использую FILE_ATTRIBUTE_NORMAL
, ofstream
будет успешно открыт.
Я не запускаю программу от имени администратора. Но я использую следующий параметр компоновщика.
![linker options](https://i.stack.imgur.com/cd384.png)
Необходимость включить Нет для Включить контроль учетных записей (UAC) важно, если мы не запустим приложение от имени администратора. ОС поможет нам записать актуальный файл в C:\Users\yccheok\AppData\Local\VirtualStore\a.txt
вместо защищенного C:\
Сбой ofstream
в скрытом файле Windows 7, это ожидаемое поведение?