Вот код :
| Код | char *path = "C:\\1.txt"; char *usr = "User";
DWORD dwRes = 0; PACL pOldDACL = NULL, pNewDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; EXPLICIT_ACCESS ea;
dwRes = GetNamedSecurityInfo(path,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,&pOldDACL,NULL, &pSD); if (ERROR_SUCCESS != dwRes) { MessageBox(NULL,"ERR1", "", MB_OK );
goto Cleanup; } // Инициализируем структуру для нового элемента // списка контроля доступа ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS)); ea.grfAccessPermissions =GENERIC_ALL;//KEY_ALL_ACCESS;//GENERIC_ALL;// KEY_ALL_ACCESS;//GENERIC_ALL;//SECTION_MAP_WRITE;//GENERIC_ALL ;//GENERIC_READ||GENERIC_WRITE; // только чтение ea.grfAccessMode = GRANT_ACCESS;//SET_ACCESS;//GRANT_ACCESS;// SET_ACCESS;//GRANT_ACCESS; ea.grfInheritance= OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE; //INHERIT_ONLY_ACE;//CONTAINER_INHERIT_ACE;;//CONTAINER_INHERIT_ACE;// NO_INHERITANCE;//CONTAINER_INHERIT_ACE; ea.Trustee.TrusteeForm = TRUSTEE_IS_NAME; // указывает тип элемента ptstrName ea.Trustee.ptstrName = usr; // для кого устанавливается доступ ( здесь можно указать имя или SID) // создаём новый список контроля доступа, в который будет входить новый элемент // с установленными разрешениями. dwRes = SetEntriesInAcl(1, &ea, pOldDACL, &pNewDACL); if (ERROR_SUCCESS != dwRes) { MessageBox(NULL,"ERR2", "", MB_OK );
goto Cleanup; } // Соединяем новый список с существующим списком объекта dwRes = SetNamedSecurityInfo(path, SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL, NULL, pNewDACL, NULL); if (ERROR_SUCCESS != dwRes) { MessageBox(NULL,"ERR3","", MB_OK );
goto Cleanup; }
MessageBox(NULL,"OK", "", MB_OK ); Cleanup: if(pSD != NULL) LocalFree((HLOCAL) pSD); if(pNewDACL != NULL) LocalFree((HLOCAL) pNewDACL);
|
Думаю поможет..... |