Когда я используюПолучить время изменения заблокированной папки с буст :: файловой системой :: last_write_time
time_t t = last_write_time("C:\\System Volume Information");
я получаю следующее исключение:
boost::filesystem::last_write_time: Access denied: "C:\System Volume Information"
Тем не менее, Windows Explorer может получить доступ к этой информации. Похоже, Boost требует дополнительного доступа к папке, и именно по этой причине код не работает.
Можно ли как-то сделать обходное решение?
Редактировать. Вот цитата из libs\filesystem\src\operations.cpp:1312
:
handle_wrapper hw(
create_file_handle(p.c_str(), 0,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0));
Я не понимаю, что случилось с ним еще.
Я думаю, что очевидный ответ будет: не с 'повышение :: файловая система :: last_write_time' Я думаю, что очевидный ответ будет: не с' повышение :: файловая система :: last_write_time'. Там migth будет подходом Win32, возможно, с достаточными привилегиями. И тогда может быть подход «канонический стрельба» с помощью Volume Shadow Copy ... – sehe
@sehe В случае, если это невозможно с Boost, это ошибка, о которой следует сообщить. –
Почему? Это ограничение ОС ограничить доступ к определенной информации. Задача разработчика - обрабатывать ошибки:/ – sehe