PACL pNewDACL = NULL, pOldDACL = NULL;
WCHAR dir_path[256] = {L"d:\xx"};
PSECURITY_DESCRIPTOR pSD = NULL;
do {
DWORD dwRes = 0;
SE_OBJECT_TYPE object_type = SE_FILE_OBJECT;
if (ERROR_SUCCESS != ::GetNamedSecurityInfo(dir_path,
object_type,
DACL_SECURITY_INFORMATION, NULL,
NULL, &pOldDACL, NULL, &pSD)) {
std::cout << "GetNamedSecurityInfo erro: " << ::GetLastError();
break;
}
EXPLICIT_ACCESS explicit_access;
ZeroMemory(&explicit_access, sizeof(EXPLICIT_ACCESS));
explicit_access.grfAccessPermissions = GENERIC_ALL;
explicit_access.grfAccessMode = GRANT_ACCESS;
explicit_access.grfInheritance = SUB_CONTAINERS_AND_OBJECTS_INHERIT;
explicit_access.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
explicit_access.Trustee.TrusteeType = TRUSTEE_IS_USER;
wchar_t user[MAX_PATH] = L"EveryOne";
explicit_access.Trustee.ptstrName = user;
// Create a new ACL that merges the new ACE
// into the existing DACL.
dwRes = ::SetEntriesInAcl(1, &explicit_access, pOldDACL, &pNewDACL);
if (ERROR_SUCCESS != dwRes) {
std::cout << "SetEntriesInAcl erro: " << ::GetLastError();
break;
}
if (ERROR_SUCCESS ==
::SetNamedSecurityInfo(const_cast<LPWSTR>(dir_path),
object_type, DACL_SECURITY_INFORMATION, NULL,
NULL, pNewDACL, NULL)) {
bRet = true;
}
std::cout << "SetNamedSecurityInfo info erro: " << ::GetLastError();
} while (0);
if (pSD) {
::LocalFree((HLOCAL)pSD);
pSD = nullptr;
}
if (pNewDACL) {
::LocalFree((HLOCAL)pNewDACL);
pNewDACL = nullptr;
}
windows api文件夹赋予EveryOne权限
于 2024-04-18 10:47:04 首次发布