Question

In my Qt 4.7.4 x64 C++ app I'm building in Qt Creator 2.5.0, I want to give full access to everyone for a file. I'm using QFile::setPermissions, which I believe works fine for Mac and Linux, but it doesn't work for Windows. According to Qt setPermissions not setting permisions, I should use

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

But I don't know what to #include to make it work. I tried:

#ifdef Q_WS_WIN
#include "Windows.h"
#endif

based on what I found here. But when I compile, I get C3861: 'SetNamedSecurityInfo': identifier not found (among some other new errors).

When I mouse over my #include "Windows.h", I get the tooltip: C:\Program Files\Microsoft SDKs\Windows\v7.0\include\Windows.h, and I can press F2 and jump to that file. We have other files in our project that include that same Windows.h, and they compile fine.

How do I set file permissions on Windows for everyone to read/write? If SetNamedSecurityInfo is what I want (I guess SetNamedSecurityInfoW in my case since my users may be running OS's in any language), what do I #include to be able to use it? Better yet, how do I figure out what to #include, so I know for next time I need to use the Windows API?

Was it helpful?

Solution

SetNamedSecurityInfo

Header Aclapi.h

Library Advapi32.lib

DLL Advapi32.dll

OTHER TIPS

A quick search on Google would probably have had this page among it top hits. There you can see which header file and library you need.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top