Qt设置权限不设置权限 [英] Qt setPermissions not setting permisions

查看:21
本文介绍了Qt设置权限不设置权限的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不确定为什么,但我下面的代码没有设置文件的权限。 不确定代码可能有什么问题。

系统: Windows XP Pro SP2。 以管理员身份在管理员帐户中运行。 最新的Qt框架和文件。

//Get file permissions of ref file.
QFile::Permissions qpPerm1;
qpPerm1 = QFile::permissions("E:/dir1/dir2/File1.txt");

//Set file permissions of a file.
bool isOK=0;
isOK = QFile::setPermissions("E:/dir4/dir5/file2.txt",qpPerm1);
qout << "Perms set? " << isOK << endl;

返回值为真...声称是它设置了权限,但它没有。 需要说明的是,file2.txt是file1.txt的副本。 我将file1的权限设置为某个值,但在运行代码后,file2.txt具有不同的权限。

推荐答案

原来的writtenQt不支持更改Windows上组的访问权限。若要完全控制文件权限,请尝试使用位于安全描述符中的访问控制列表。

MSDN suggests此:

要检索文件或目录对象的安全描述符, 调用GetNamedSecurityInfo或GetSecurityInfo函数。去改变 文件或目录对象的安全描述符,请调用 SetNamedSecurityInfo或SetSecurityInfo函数。

我认为在您的情况下,可以尝试第一个文件中的GetNamedSecurityInfo,并将其传递给第二个文件的SetNamedSecurityInfo。


您还可以分配空的ACL,它将重置所有组权限并为每个人授予完全访问权限:

SetNamedSecurityInfoA("C:file.txt", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL);

这篇关于Qt设置权限不设置权限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆