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

Перед записом даних в реєстр, програма повинна розділити дані на дві категорії: комп’ютерно-орієнтовані дані і користувацько-орієнтовані. Таке розрізнення дозволяє програмі підтримувати різні настройки для різних користувачів і навіть розміщувати користувацько-орієнтовані дані в мережі, реалізуючи незалежний від розміщення користувацький профіль. (користувацький профіль – це набір конфігураційних даних кожного користувача.)

Коли програма інсталюється, вона повинна записати комп’ютерно-орієнтовані дані за ключем HKEY_LOCAL_MACHINE. Як правило програма створює ключі для імені компанії, імені продукту, та номеру версії, як показано в наступному прикладі:

HKEY_LOCAL_MACHINE\Software\MyCompany\MyProduct\1.0

Якщо програма підтримує OLE, вона повинна записати відповідні дані в HKEY_LOCAL_MACHINE\Software\Classes.

Кожна програма повинна записати користувацько-орієнтовані дані за ключем HKEY_CURRENT_USER, як показано в прикладі:

HKEY_CURRENT_USER\Software\MyCompany\MyProduct\1.0\...

    1. 1.3 Відкриття і закриття ключів реєстру

Для роботи з реєстром необхідно отримати дескриптор ключа. Отримати дескриптор можна двома способами: створити або відкрити ключ. Для того, щоб відкрити ключ викликається Win32 API функція RegOpenKeyEx.

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

  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 "Control Panel\Desktop",0 ; Назва ключа, який відкривається

  14. hkey dd ? ; Змінна,яка отримає дескриптор ключа

  15. .code

  16. start:

  17. invoke RegOpenKeyEx, \ ; Функція відкриття ключа реєстра

      1. HKEY_CURRENT_USER, \ ; Точка в реєстрі з якої відкривається ключ

      2. addr Subkey, \ ; Див. А13

      3. 0, \ ; Завжди рівне нулю

      4. KEY_EXECUTE, \ ; Режим доступу до відкритого ключа

      5. addr hkey ; Посилання на змінну в А14

  18. invoke RegCloseKey, hkey ; Закриття дескриптора ключа

  19. invoke ExitProcess,0 ; Вихід з програми

  20. end start

В програмі А після виклику функції RegOpenKeyEx в А17 отримується дескриптор для ключа з назвою “Control Panel\Desktop\”. Назву ключа оголошено в А13. Дескриптор потрапляє в змінну А14. Опишемо детальніше аргументи для функції RegOpenKeyEx, які містяться в стрічках А17.1-А17.5:

А17.1 являється дескриптором вже відкритого ключа; можна використати такі стандартні відкриті ключі:

HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS

А17.2 містить посилання на назву ключа, який відкривається (А13).

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

А17.4 вказує режим доступу до відкритого ключа. Цей параметр може приймати наступні значення:

Значення

Опис

KEY_ALL_ACCESS

Комбінація з KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK та KEY_SET_VALUE прав доступу.

KEY_CREATE_LINK

Дозвіл на створення символьного посилання.

KEY_CREATE_SUB_KEY

Дозвіл на створення підключів.

KEY_ENUMERATE_SUB_KEYS

Дозвіл на перегляд підключів.

KEY_EXECUTE

Дозвіл на читання інформації.

KEY_NOTIFY

Дозвіл на отримання сповіщень про зміни.

KEY_QUERY_VALUE

Дозвіл на читання інформації, яка міститься в підключах.

KEY_READ

Комбінація прав доступу KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS і KEY_NOTIFY.

KEY_SET_VALUE

Дозвіл на зміну інформації в підключах.

KEY_WRITE

Комбінація прав доступу KEY_SET_VALUE та KEY_CREATE_SUB_KEY.

А17.5 – посилання (addr) на змінну оголошену в А14; ця змінна й отримає дескриптор відкритого ключа.

Коли робота з ключем завершена викликається функція закриття дескриптора RegCloseKey (А18).

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