我想给特定用户写入/更改特定文件的访问权限。 我已经拥有了用户的SID。 我试图利用这里指定的代码: how to change the ACLs from c++? 但不幸的是,它也剥夺了其他用户组的ALL权限。 下面是我正在使用的当前代码:
PACL pACL = NULL;
EXPLICIT_ACCESS ea[1];
SecureZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
ea[0].grfAccessPermissions = 0xFFFFFFFF;
ea[0].grfAccessMode = GRANT_ACCESS;
ea[0].grfInheritance = NO_INHERITANCE;
ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
ea[0].Trustee.TrusteeType = TRUSTEE_IS_USER;
ea[0].Trustee.ptstrName = (LPTSTR)pSid;
SetEntriesInAcl(1, ea, NULL, &pACL);
PSECURITY_DESCRIPTOR pSD = (PSECURITY_DESCRIPTOR)LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH);
InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(pSD, TRUE, pACL, FALSE);
SetFileSecurity(filename, DACL_SECURITY_INFORMATION, pSD);
LocalFree(pACL);
LocalFree(pSD);
任何帮助表示赞赏