以编程方式删除文件的所有权限
Programmatically remove all permissions of a file
在Linux操作系统中,chmod
可以将给定文件的权限设置为none
,即:没有人可以read/write/exec
这个文件。(维基百科-八进制模式)
如何做同样的Qt?
我知道有QFile::setPermissions
和enum QFile::Permission
,但在enum中没有值none
。
QFile::setPermissions(0)
清除所有权限,就像Linux上的chmod
一样。
Windows更新
根据Qt QFile文档:
Qt对文件权限的理解是有限的,这会影响特别是
QFile::setPermissions()
函数。在Windows上,Qt可以set 只设置旧的只读标志,并且只有在没有传递Write*标志。Qt不操纵访问控制列表(acl),这使得此功能对NTFS卷几乎毫无用处。它对于使用VFAT文件系统的u盘可能仍然有用。POSIXacl也不会被操纵。
因此,在Windows上可以使用QFile::setPermissions()
设置或取消传统的只读标志。该功能的使用也很棘手。要设置只读标志,只需要配置一些"读*"权限。但是,要去掉这个标志,应该添加一个写权限,例如:
// set Windows read-only file flag
file.setPermissions(QFile::ReadOther);
// remove Windows read-only file flag
file.setPermissions(QFile::ReadOther | QFile::WriteOther);
我在Qt c++的答案中发现的最后一个技巧使用
由于Permissions
只是QFlags<Permission>
的类型定义,因此可以这样使用构造函数QFlags<Permission>(Zero zero = 0)
:
file.setPermissions(Permissions());
or -在c++ 11中:
file.setPermissions({});
相关文章:
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 从根权限进程创建可访问的文件
- 威纳派读取自定义文件或文件夹的所有访问权限
- 如何在C#或C++中获取文件或文件夹的有效权限?有什么 API 吗?
- 在没有root权限的情况下安装NTL,并在生成文件中修改其构建路径
- TOCTTOU - 在处理文件之前使用访问权限
- 提升进程间共享内存删除、权限和输出文件
- C++ - 将文本追加到仅具有 NTFS"追加数据"权限的文件
- 如何使用 c++ 创建对"everyone"具有共享访问权限的文件夹
- 检查文件是否具有Windows c ++的可执行权限
- CLION无法打开输出文件,拒绝了权限
- 为可执行文件授予比运行用户更多的权限
- 无法打开输出文件___.exe:权限被拒绝
- 写入文件权限被拒绝
- Dokan:我应该自己处理文件共享和访问权限吗?
- 在 C++ 中为文件夹中的所有文件设置权限
- 确定程序本身是否具有对文件的特定访问权限的最简洁的方法是什么
- 在没有读取权限 c++ 的情况下返回大小文件
- C++将文件权限添加到 zip 文件
- 如何在Qt/C++中设置Windows文件权限