我想使用
std::filesystem
查询提供给我的函数的磁盘文件夹路径。 我想知道我是否有该文件夹的写入权限。 但我想这样做而不是实际尝试写入文件夹。
最后一个要求部分是因为
std::filesystem::status()
就是我想要的功能。然而,该函数返回的权限标志包括 owner_write
、group_write
和 others_write
。
我如何知道哪一个适用于我? 我不知道我的应用程序/用户是所有者、组还是“其他”。 是否有某种
can_i_write_to_this_folder()
函数在某处运行?
我能找到的唯一与此相关的线程没有涉及<filesystem>
[编辑] 人们似乎认为我正在寻找一些不切实际的可写性保证。我不是。我并不认为任何文件系统功能都是万无一失的。我不会将某些关键任务系统建立在这个决定的基础上
当<filesystem>
出现并给我们所有
directory_iterator
和其他好东西时,他们所宣传的目的是有用的。 所以当我发现这是真的时,我评估了它们并使用了它们。 就像我对
std::atomic<>
和参数包、
std::variant
以及许多其他东西所做的那样。 我想我们都同意,多年来添加了一些东西,但事实证明并不是那么好。现在图书馆宣传此功能,
filesystem::status()
,旨在告诉我们(除其他外)文件或文件夹的权限。 我想知道这个“访问”信息是否有任何实际用途。 共识似乎并非如此。
使用boost获取文件的所有者和组
和如何使用boost文件系统确定文件或目录的所有者?
中对
boost::filesystem
(这是std::filesystem
的基础)的回答,没有办法让文件的所有者使用这个库。这确实意味着了解所有者/组/其他方面的文件权限并不是很有用。
对于 POSIX 系统,您可以按照上面评论中的建议使用 access
,对于 Windows...我不知道。也许可以使用
GetSecurityInfo
获取文件所有者,并使用
LookupAccountSid
获取当前用户并进行比较。