【发布时间】:2012-09-07 16:04:24
【问题描述】:
在我在 Qt Creator 2.5.0 中构建的 Qt 4.7.4 x64 C++ 应用程序中,我想为每个人提供文件的完全访问权限。我正在使用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
基于我发现的here。但是当我编译时,我得到了C3861: 'SetNamedSecurityInfo': identifier not found(以及其他一些新错误)。
当我将鼠标悬停在我的 #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(路径,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,NULL,NULL);但是我得到了一个链接错误,直到我在我的 .pro 中添加了这个:
win32:LIBS += -ladvapi32 -
无法格式化我上面的评论 - 抱歉!
标签: c++ winapi file-permissions qt4.7