этот код создает папку C:\DACL и формирует для нее ACL, а точнее DACL, запрещающий доступ BG,SY,BA,IU,BU Code: #include "stdafx.h" #include <windows.h> #include <sddl.h> int main(int argc, char* argv[]) { SECURITY_ATTRIBUTES sa; sa.nLength=sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle=false; char *szSD = "D:P" "(D;OICI;GA;;;BG)" //встроенная группа guests "(D;OICI;GA;;;SY)" //local system "(D;OICI;GA;;;BA)" //builtin admininstrators "(D;OICI;GA;;;IU)" //interactive "(D;OICI;GA;;;BU)"; //builtin users if (ConvertStringSecurityDescriptorToSecurityDescriptor(szSD,SDDL_REVISION_1,&(sa.lpSecurityDescriptor),NULL)){ if (!CreateDirectory("C:\\DACL",&sa))DWORD err=GetLastError(); } LocalFree(sa.lpSecurityDescriptor); return 0; } Можно ли после запуска этой программы изменить права к этой папке или удалить ее программно ?
и еще необходимо переделать dacl для уже существующей папки/файла. Для этого предназначена функция SetSecurityDescriptorDacl(), но для нее нужна не _SECURITY_ATTRIBUTES, а _ACL. Можно ли как-то перегнать параметры _SECURITY_ATTRIBUTES в _ACL ? или подскажите пример задания dacl в структуре _ACL P.S. msdn ничего нормального не подсказал