2012-09-07 92 views
2

在我的Qt 4.7.4 x64 C++應用程序中,我正在Qt Creator 2.5.0中構建,我想爲每個人完全訪問文件。我使用的是QFile::setPermissions,我認爲它適用於Mac和Linux,但它不適用於Windows。據Qt setPermissions not setting permisions,我應該使用如何在Qt/C++中設置Windows文件權限

SetNamedSecurityInfoA("C:\file.txt", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL); 

但我不知道什麼#包括使其工作。我試過:

#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包含哪些內容,以便下次我需要使用Windows API?

+0

我用這個代碼編譯: #include「Aclapi.h」 LPTSTR path =(LPTSTR)dict_path.utf16(); SetNamedSecurityInfo(path,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,NULL,NULL); 但我得到了一個鏈接錯誤,直到我還在我的.pro文件中加入了這個: 'win32:LIBS + = --ladvapi32' –

+0

無法格式化我的評論 - 抱歉! –

回答

1

在谷歌快速搜索很可能就不會有this page中它頂級命中。在那裏你可以看到你需要哪個頭文件和庫。其他新手: