Трудности с обработкой файлов после выключения или перезагрузки

Я написал небольшое приложение, которое может регистрировать некоторые данные и записывать их через ofstream в файл:

ofstream filename;
filename.open("filename.ext", ios::out | ios::app);
filename << stuff;

Этот файл закрывается и повторно открывается каждые 30 секунд.
Второй файл «settings.ext» используется для определения поведения программ. Функция выглядит следующим образом:

ifstream input("settings.qib", ios::in);
string number;
for (string line; getline(input, line); )
{
if (line.find("updateInterval") != string::npos) {
number = "";
for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i);
updateInterval = stoi(number);
}
if (line.find("visibility") != string::npos) {
number = "";
for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i);
Stealth(stoi(number));
}
if (line.find("console") != string::npos) {
number = "";
for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i);
console = stoi(number);
}
}

Это было лучшее, что я мог придумать, чтобы прочитать файл примерно так:

0 = видимость

1 = консоль

30 = updateInterval

Все отлично работает. Настройки обновляются в том же ритме, что и файл журнала.

Я создал запись в реестре для всей программы, чтобы запускаться при каждом запуске, что также отлично работает.
Но после завершения работы или перезагрузки программа, похоже, игнорирует два файла. В файл журнала не добавляется новый контент, и настройки также не обновляются.

Я предполагаю, что это как-то связано с тем фактом, что файл журнала открыт во время выключения, но это не объясняет, почему файл настроек также не затрагивается.

Я прочитал кое-что о WM_ENDSESSION но я не уверен, что это правильный путь.

Я открыт для всех видов ответов или других способов достижения моей цели.

0

Решение

После многих перезагрузок я понял, что текущий рабочий каталог указан как / system32 после запуска. Не удивительно, что файлы могут быть открыты.
Первое: в system32 таких файлов нет.
Второе: программа не имеет разрешения на запись в этот каталог.
Чтобы решить эту проблему, я изменяю каталог, используя _chdir (), и все работает как чудо.

0

Другие решения

Других решений пока нет …