【问题标题】:how to set Windows file permissions in Qt/C++如何在 Qt/C++ 中设置 Windows 文件权限
【发布时间】: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


【解决方案1】:

SetNamedSecurityInfo

标题 Aclapi.h

图书馆 Advapi32.lib

DLL Advapi32.dll

【讨论】:

    【解决方案2】:

    在 Google 上进行快速搜索,this page 可能会成为热门搜索之一。在那里你可以看到你需要哪个头文件和库。

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2011-09-10
      • 2010-10-10
      • 2014-07-14
      • 1970-01-01
      相关资源
      最近更新 更多