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

 

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

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

A1..386

A2..model flat, stdcall

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

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

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

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

A7.include c:\masm32\include\masm32.inc

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

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

A10. includelib c:\masm32\lib\masm32.lib

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

A12..data                             

A13. Subkey db "Control Panel\Desktop",0; Назва ключа, який відкривається

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

A15..code                                 

A16. start:

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

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

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

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

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

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

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

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

A20. 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).







Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: