3

在我在 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

根据我在这里找到的。但是当我编译时,我得到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?

4

2 回答 2

1

设置命名安全信息

头文件 Aclapi.h

库 Advapi32.lib

DLL Advapi32.dll

于 2012-09-07T16:07:59.783 回答
1

在 Google 上进行快速搜索可能会使该页面成为热门搜索之一。在那里你可以看到你需要的头文件和库。

于 2012-09-07T16:08:09.823 回答