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