Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

1.4 Створення підключа у відкритому ключі реєстру

Для створення підключа викликається функція RegCreateKeyEx.

Приклад виклику функції RegCreateKeyEx – Програма Б

  1. .386

  2. .model flat, stdcall

  3. include c:\masm32\include\windows.inc

  4. include c:\masm32\include\kernel32.inc

  5. include c:\masm32\include\advapi32.inc ; Необхідна для роботи з реєстром

  6. include c:\masm32\include\user32.inc

  7. include c:\masm32\include\masm32.inc

  8. includelib c:\masm32\lib\kernel32.lib

  9. includelib c:\masm32\lib\user32.lib

  10. includelib c:\masm32\lib\masm32.lib

  11. includelib c:\masm32\lib\advapi32.lib ; Необхідна для роботи з реєстром

  12. .data

  13. subkey db "Software\NewCompany”,0 ; Назва для ключа,який створиться

  14. hkey dd ? ; Дескриптор новоствореного ключа

  15. .code

  16. start:

  17. invoke RegCreateKeyEx, \ ; Функція створення нового ключа в реєстрі

Б17.1. HKEY_CURRENT_USER, \ ; Точка в реєстрі в якій створюватиметься ключ

Б17.2. addr subkey, \ ; Назва ключа, який створюється (Б13)

Б17.3. 0, \ ; Завжди рівне 0

Б17.4. 0, \ ; Клас створеного ключа, 0 – по замовчуванню

Б17.5. REG_OPTION_NON_VOLATILE, \ ; Опція визначає, що ключ постійно

; зберігається в реєстрі

Б17.6. KEY_WRITE, \ ; Режим доступу до нового ключа

Б17.7. 0, \ ; Дескриптор не переходить по спадковості

Б17.8. addr hkey, \ ; Посилання на змінну, яка отрим. дескриптор ; створеного ключа (Б14)

Б17.9. 0 ; Не отримувати дані про результат створення

  1. invoke ExitProcess,0

  2. end start

В програмі Б створюється новий підключ в гілці реєстру “HKEY_CURRENT_USER\Software” з назвою NewCompany. Опишемо детальніше аргументи функції RegCreateKeyEx (Б17.1-Б17.9):

Б17.1 визначає точку в реєстрі в якій створюється новий ключ, за можливими варіантами точок, див. вище опис А17.1.

Б17.2 вказує на стрічку Б13, яка містить назву нового ключа.

Б17.3 зарезервовано OC Windows, мусить бути нульовим.

Б17.4 може вказувати на стрічку, яка визначає клас (тип об’єкта) нового ключа або просто 0 для звичайного класу.

Б17.5 визначає властивості збереження ключа (постійний, тимчасовий і т.п.). Цей параметр може приймати одне з наступних значень:

Значення

Опис

REG_OPTION_NON_VOLATILE

Створюваний ключ є постійним; цей параметр є по замовчуванню. Інформація асоційована з ключем зберігається в файлі і залишається після перезавантаження комп’ютера.

Функція RegSaveKey зберігає постійні ключі.

REG_OPTION_VOLATILE

Для Windows NT: створюваний ключ є тимчасовим; інформація, асоційована з ним зберігається в оперативній пам’яті і не залишається після перезавантаження комп’ютера. Функція RegSaveKey не зберігає тимчасові ключі. Цей параметр ігнорується коли ключ вже існує. Windows 9х: це значення ігнорується в Windows 9х. Коли вказати його, то функція RegCreateKeyEx створює постійний ключ і повертає ERROR_SUCCESS.

REG_OPTION_BACKUP_RESTORE

Windows NT: коли встановлене це значення, функція ігнорує параметр Б17.6 і робить спробу відкрити ключ в режимі необхідному для резервування або відновлення ключа. Коли потік, який викликає функцію RegCreateKeyEx має включені привілеї SE_BACKUP_NAME, ключ буде відкритий з правами доступу ACCESS_SYSTEM_SECURITY і KEY_READ. Якщо викликаючий потік має включені привілеї SE_RESTORE_NAME, ключ відкривається з правами доступу ACCESS_SYSTEM_SECURITY та KEY_WRITE. Коли обидва привілеї існують, ключ відкривається з всіма переліченими правами доступу.

Windows 9х: це значення ігнорується, оскільки Windows 9х не має захисту на доступ до реєстру.

Б17.6 визначає права доступу до новоствореного ключа; для повного списку можливих значень див. опис аргументу А17.4.

Б17.7 – вказівник на структуру SECURITY_ATTRIBUTES, яка визначає, чи повернутий дескриптор ключа буде передаватися породженим процесам, чи ні. Коли цей параметр рівний нулю (як в програмі Б), дескриптор не буде передаватися.

Б17.8 вказує на змінну Б14, в яку запишеться дескриптор створеного ключа.

Б17.9 – якщо не нуль, то вказує на змінну, яка прийматиме одне з перелічених нижче значень:

Значення

Опис

REG_CREATED_NEW_KEY

Ключ не існував і був створений.

REG_OPENED_EXISTING_KEY

Ключ вже існував і був лише відкритий.

Коли задати функції RegCreateKeyEx створення вже існуючого ключа, то вона його просто відкриє, як RegOpenKeyEx (програма А).

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