在我的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时就知道了?
LPTSTR path=(LPTSTR)dict_path.utf16();
SetNamedSecurityInfo(path, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL); 但是我遇到了链接错误,直到我在我的.pro文件中添加了以下内容:
win32:LIBS += -ladvapi32
- David Burson