Re: Security Descriptor
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.04.04 03:12
Оценка:
Здравствуйте, moc, Вы писали:

Я в программном управлении ACL Не силён, но вот код который работал в своё время


// Local variables
TCHAR buffer[1000];
// Code
if (InitializeAcl((PACL)&buffer, sizeof(buffer), ACL_REVISION))
    {
        // Local variables
        SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_WORLD_SID_AUTHORITY;
        PSID lpSid;
        // Code
        // Это Everyone, с помошью LookupAccountSid вроде можно получать и других пользователей.
        if (AllocateAndInitializeSid(&siaNtAuthority, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &lpSid)) 
            {
                if (AddAccessDeniedAce((PACL)&buffer, ACL_REVISION,
                    FILE_WRITE_DATA |
                    FILE_APPEND_DATA |
                    FILE_WRITE_EA |
                    FILE_WRITE_ATTRIBUTES |
                    DELETE,
                    lpSid))
                    {
                        if (AddAccessAllowedAce((PACL)&buffer, ACL_REVISION,
                            FILE_READ_DATA | 
                            FILE_READ_EA | 
                            FILE_EXECUTE | 
                            FILE_READ_ATTRIBUTES | 
                            SYNCHRONIZE,
                            lpSid))
                            {
                                // Local variables
                                SECURITY_DESCRIPTOR sd;
                                // Code
                                if (InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION))
                                    {
                                        if (SetSecurityDescriptorDacl(&sd, TRUE, (PACL)&buffer, FALSE))
                                            {
                                                SetFileSecurity(_T("C:\\Program.exe"), DACL_SECURITY_INFORMATION, &sd);
                                            }
                                    }
                            }
                    }
                FreeSid(lpSid);
            }
    }
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.