Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_drsp_07.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
247.81 Кб
Скачать

2.7. Налаштування груп

Під налаштуванням груп в маркері доступу розуміємо установку або скидання прапора se_group_enabled для кожної групи, пов'язаної із заданим маркером доступу. При цьому відзначимо, що цей прапор не може бути встановлений для групи зі встановленим прапором se_group_use_for_deny_only. Крім того, відмітимо, що прапор se_group_enabled не може бути скинутий для групи зі встановленим прапором se_group_mandatory.

Для налаштування груп використовується функція AdjustTokenGroups, яка має наступний прототип:

BOOL AdjustTokenGroups(

HANDLE TokenHandle, // дескриптор маркера доступу

BOOL ResetToDefault, // скинути в стан за умовчанням

PTOKEN_GROUPS NewState, // новий стан груп

DWORD BufferLength, // довжина буфера PreviousState

PTOKEN_GROUPS PreviousState, // попередній стан груп

PDWORD ReturnLength // необхідна довжина буфера PreviousState

);

В разі успішного завершення функція поверне ненульове значення, а в разі невдачі — FALSE. Код помилки в разі невдалого завершення функції можна отримати за допомогою виклику функції GetLastError. Параметри функції AdjustTokenPrivileges мають наступне призначення.

Параметр TokenHandle повинен містити дескриптор маркера доступу, в якому налаштовуються групи. Причому маркер доступу має бути відкритий в режимі token_adjust_groups.

У параметрі ResetToDefault має бути встановлене одне із значень: FALSE або TRUE. Якщо встановлено значення FALSE, то функція налаштовує групи відповідно до інформації, заданої параметром NewState. Якщо ж в цьому параметрі встановлено значення TRUE, то функція переводить всі групи в стани, які були задані за умовчанням.

Параметр NewState повинен вказувати на структуру типу token_groups, яка містить групи і нові прапори стану se_group_enabled для кожної з перерахованих груп. Якщо для групи встановлений прапор se_group_enabled, то цей прапор буде також встановлений і для відповідної групи в маркері доступу, інакше цей прапор буде скинутий для відповідної групи в маркері доступу.

Параметр BufferLength повинен містити розмір буфера пам'яті, на який вказує параметр PreviousState. Якщо в параметрі PreviousState встановлено значення NULL, то в цьому параметрі може бути встановлене значення 0.

Параметр PreviousState повинен вказувати на буфер, в який функція запише структуру типу TOKEN_GROUPS. Ця структура міститиме попередній стан груп, пов'язаних з маркером доступу. У цьому параметрі може бути встановлене значення NULL. В цьому випадку функція не поверне попередній стан груп з маркера доступу. Якщо довжина буфера недостатня для запису попереднього стану груп, то функція закінчиться невдачею, а необхідна довжина буфера буде записана в змінну, на яку указує параметр ReturnLength. При цьому попередній стан груп використовується для відновлення стану груп в початковий стан.

Параметр ReturnLength повинен указувати на змінну типу PDWORD, в яку функція запише необхідну довжину буфера для попереднього стану груп маркера доступу, якщо довжина задана параметром BufferLength менше необхідної. Якщо в параметрі PreviousState встановлено значення NULL, то в цьому параметрі також може бути встановлене значення NULL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]