设置创建的文件权限

时间:2014-01-21 09:16:06

标签: c winapi acl

我想知道如何设置Windows文件的权限? 像chmod()这样的东西,而不是窗户。

例如:

创建文件example.exe,并以只有所有者的方式设置其权限 这个文件可以执行它。

我读到某个地方有一个针对c的ACL API,但我还是不太明白。

1 个答案:

答案 0 :(得分:5)

这比chmod要多得多!

在创建安全描述符之后,我冒昧地创建了文件 - 它更安全。如果你反过来做事(首先创建文件),那么没有设置所需访问的时间很短。

试试这个:

#include <windows.h>
#include <AclAPI.h>
#include <Lmcons.h>

int main()
{
    SECURITY_DESCRIPTOR sd;
    EXPLICIT_ACCESS ea[1];
    PACL pDacl;
    SECURITY_ATTRIBUTES sa;

    TCHAR UserBuffer[UNLEN+1];
    DWORD ulen = UNLEN;
    GetUserName(UserBuffer, &ulen);

    InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);

    BuildExplicitAccessWithName(&ea[0], UserBuffer, GENERIC_EXECUTE, 
                        SET_ACCESS, NO_INHERITANCE);

    SetEntriesInAcl(1, ea, NULL, &pDacl);
    SetSecurityDescriptorDacl(&sd, TRUE, pDacl, FALSE);

    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle = FALSE;
    sa.lpSecurityDescriptor = &sd;

    CreateFileA("c:\\temp\\example.exe", GENERIC_EXECUTE, 0, &sa,
        CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);

    return 0;
}