この単純なコード:
std::time_t tm = boost::filesystem::last_write_time( filename );
boost::filesystem::last_write_time( directory, tm );
directory
コードを実行しているユーザー以外のユーザーが所有するパスの場合、「操作は許可されていません」という例外をスローします。
777
またはパーミッションを持つディレクトリを扱っているので、これには少し混乱しています。シェルでrwxrwxrwx
使用することで、変更時間を簡単に変更できます。touch
私は何かが足りないのですか?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 );