如何在Qt/C++中设置Windows文件权限

3

在我的Qt 4.7.4 x64 C++应用程序中,我正在使用Qt Creator 2.5.0构建,在其中,我想为文件提供完全访问权限。我正在使用QFile::setPermissions,我相信它对Mac和Linux都有效,但在Windows上不起作用。根据Qt setPermissions not setting permisions,我应该使用

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

但我不知道要#include什么才能使它工作。我尝试了:
#ifdef Q_WS_WIN
#include "Windows.h"
#endif

根据我在这里发现的内容。但是当我编译时,我得到了C3861:“SetNamedSecurityInfo”:找不到标识符(还有其他一些新错误)。

当我将鼠标悬停在我的#include“Windows.h”上时,我会得到工具提示:C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ Windows.h,我可以按F2跳转到该文件。我们项目中有其他包含相同Windows.h的文件,并且它们可以成功编译。

如何在Windows上设置文件权限以供所有人读/写?如果SetNamedSecurityInfo是我想要的(我猜我的情况下是SetNamedSecurityInfoW,因为我的用户可能在任何语言的操作系统上运行),那么我需要#include什么才能使用它?更好的做法是,我如何找出要#include什么,这样下次我需要使用Windows API时就知道了?


对于其他新手:我用以下代码编译成功了:#include "Aclapi.h"
LPTSTR path=(LPTSTR)dict_path.utf16();
SetNamedSecurityInfo(path, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL); 但是我遇到了链接错误,直到我在我的.pro文件中添加了以下内容:win32:LIBS += -ladvapi32
- David Burson
无法格式化我上面的评论 - 抱歉! - David Burson
2个回答

1

1
在谷歌上快速搜索可能会将this page列为其中的热门搜索结果。在那里,您可以看到需要哪些头文件和库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接