这个简单的代码:
std::time_t tm = boost::filesystem::last_write_time( filename );
boost::filesystem::last_write_time( directory, tm );
directory
如果用户拥有的路径不是执行代码的用户,则抛出“不允许操作”异常。
我对此感到有些困惑,因为我正在处理具有777
或rwxrwxrwx
权限的目录,并且我可以通过touch
在 shell 中使用轻松更改它们的修改时间。
我错过了什么吗?Boost 是否要求比它需要的更多权限?有没有办法解决这个问题?
这是Boost中的相关代码:
handle_wrapper hw(
create_file( ph.c_str(), FILE_WRITE_ATTRIBUTES,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0 ) );
if ( hw.handle == INVALID_HANDLE_VALUE )
return error_code( ::GetLastError(), system_category );
return error_code( ::SetFileTime( hw.handle, 0, 0, &last_write_time ) != 0
? 0 : ::GetLastError(), system_category );