Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2012
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1.             HANDLE hDir = CreateFile(lpPath,READ_CONTROL|WRITE_DAC,0,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
  2.             if(hDir == INVALID_HANDLE_VALUE)
  3.             return FALSE;
  4.  
  5.             ACL* pOldDACL;
  6.             SECURITY_DESCRIPTOR* pSD = NULL;
  7.             GetSecurityInfo(hDir, SE_FILE_OBJECT , DACL_SECURITY_INFORMATION,NULL, NULL, &pOldDACL, NULL, (void**)&pSD);
  8.  
  9.             PSID pSid = NULL;
  10.             SID_IDENTIFIER_AUTHORITY authNt = SECURITY_NT_AUTHORITY;
  11.             AllocateAndInitializeSid(&authNt,2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID_USERS,0,0,0,0,0,0,&pSid);
  12.  
  13.             EXPLICIT_ACCESS ea={0};
  14.             ea.grfAccessMode = GRANT_ACCESS;
  15.             ea.grfAccessPermissions = GENERIC_ALL;
  16.             ea.grfInheritance = CONTAINER_INHERIT_ACE|OBJECT_INHERIT_ACE;
  17.             ea.Trustee.TrusteeType = TRUSTEE_IS_GROUP;
  18.             ea.Trustee.TrusteeForm = TRUSTEE_IS_SID;
  19.             ea.Trustee.ptstrName = (LPTSTR)pSid;
  20.  
  21.             ACL* pNewDACL = 0;
  22.             DWORD err = SetEntriesInAcl(1,&ea,pOldDACL,&pNewDACL);
  23.  
  24.             if(pNewDACL)
  25.             SetSecurityInfo(hDir,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL, NULL, pNewDACL, NULL);
  26.  
  27.             FreeSid(pSid);
  28.             LocalFree(pNewDACL);
  29.             LocalFree(pSD);
  30.             LocalFree(pOldDACL);
  31.             CloseHandle(hDir);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement