- phkResult - записується хендл створеного ключа.
І нарешті, останній, дев'ятий аргумент - lpdwDisposition - Вказує місце, куди буде записана інформація про те, що сталося з ключем. Справа в тому, що якщо за допомогою цієї функції проводиться спроба створити ключ, який вже існує, то ключ не створюється, а просто відкривається. Тому додатку необхідно знати, що сталося при створенні ключа.
Якщо ключ був створений, то в полі, яке визначається lpdwDisposition, записується значення REG_CREATED_NEW_KEY.
У тому випадку, якщо ключ існував і був відкритий, записуване значення дорівнює REG_OPENED_EXISTING_KEY. p> Це поле може бути використано і для того, щоб дізнатися, чи не чи відкритий ключ іншим додатком. Відкритий ключ доступний тільки того додатком, яке створило його. Таким чином, якщо додаток відкриває завідомо існуючий ключ і отримує у відповідь значення REG_CREATED_NEW_KEY, то можна зробити висновок про те, що ключ зайнятий іншим додатком.
Для ВІДКРИТТЯ підключа реєстру за необхідним типом доступу служить функція RegOpenKeyEx (). Ця функція не створює ключ, якщо він не існує. Замість цього вона повертає код помилки.
LONG RegOpenKeyEx (HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, REGSAM samDesired, PHKEY phkResult)
Параметри:
hKey - хендл відкриваємого ключа.
lpSubKey - покажчик на рядок, що завершується нульовим символом в кінці і містить ім'я нового ключа.
Reserved - резерв.
samDesired - доступ до ключа з необхідним рівнем захисту.
phkResult - покажчик на змінну HKEY, якій присвоюється хендл нового ключа.
що повертається значення: якщо ключ створено чи відкрито вдало, то значення ERROR_SUCCESS. Будь-яке інше значення є помилкою. br/>В
2. Закриття ключів і збереження вироблених в них змін
Закривається ключ за допомогою функції RegCloseKey (). При цьому звільняються будь-які пов'язані з даними ключем системні ресурси. Закриття ключа аж ніяк не викликає затримку операцій запису, що відбуваються безпосередньо після виконання даної функції. Синтаксис функції наступний:
LONG RegCloseKey (HKEY hKey)
Параметри:
hKey - хендл закривається ключа.
що повертається значення: якщо ключ створено чи відкрито вдало, то значення ERROR_SUCCESS. Будь-яке інше значення є помилкою. p> Проблема. Справа в тому, що дані з реєстру на час роботи з ними переписуються в кеш і записуються назад на диск при виконанні функції RegFlushKey (). Щоб дані, змінені під час роботи програми, що не були втрачені, то перед закриттям ключа слід їх скидати на диск. З іншого боку, у програміста може з'явитися спокуса скидати дані на диск досить часто. Так як RegFlushKey () використовує величезну кількість системних ресурсів, то цю функцію потрібно викликати тільки в тому випадку, коли дійсно в цьому є необхідність. Синтаксис функції наступний:
LONG RegFlushKey (HKEY hKey)
Параметри:
hKey - хендл ключа, вміст якого має бути скинуто на диск.
що повертається значення: якщо ключ створено чи відкрито вдало, то значення ERROR_SUCCESS. Будь-яке інше значення є помилкою. br/>
3. Додавання даних до ключів і видалення даних з ключів
Після того, як ключ створений, виникає необхідність додати до ключа деякі дані, які будуть використовуватися програмою. Для цього потрібно викликати функцію RegSetValueEx (). Ця функція встановлює іменнованное значення будь-якого підключа системного реєстру. У даного підключа може бути безліч іменованих значень. Синтаксис функції наступний:
LONG RegSetValueEx (HKEY hKey, LPCSTR lpszValueName, DWORD dwReserved, DWORD dwDataType, CONST BYTE * lpData, DWORD dwByte)
Параметри:
hKey - хендл ключа, до якого додаються дані.
lpszValueName - покажчик на рядок, що завершується нульовим символом в кінці і містить ім'я рядка додаються даних.
Reserved - резерв.
dwDataType - тип даних, що зберігається, який задається ідентифікатором (табл.4).
lpData-укзатель на дані, які будуть зберігатися у вибраному значенні. Обсяг даних, зберігаються в системному реєстрі, обмежується використовуваним обсягом пам'яті. Тому великі значення повинні зберігається у файлах, а імена цих файлів слід зберігати в системному реєстрі.
dwByte - довжина сохраняемой рядка даних за винятком завершального рядок нульового символу.
що повертається значення: якщо ключ створено чи відкрито вдало, то значення ERROR_SUCCESS. Будь-яке інше значення є помилкою. p> Перший аргумент - хендл ключа, до якого додаються дані.
Другий аргумент - покажчик на рядок, що містить ім'я додаються даних.
Третій аргумент зарезервований.
Четвертий аргумент визначає тип інформації, який буде збережений як даних.
П'ятий аргумент є покажчиком безпосередньо на дані...