我想给特定用户写入/更改特定文件的访问权限 . 我已经拥有了用户的SID . 我试图利用这里指定的代码:how to change the ACLs from c++?但遗憾的是它也剥离了其他用户组的所有权限 . 下面是我正在使用的当前代码:

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);

任何帮助赞赏