Познавательный блог Мобильная врсия

Страницы

Промо

Работа с системным реестром Windows на C++

Работа с системным реестром Windows на C++. В сегодняшней статейке, я расскажу вам, как вы можете читать, писать ключи в реестр, создавать разделы в реестре и т.д. Функции RegOpenKeyEx, RegQueryValueEx, RegCreateKeyEx, RegCloseKey. В примере ниже я покажу как узнать куда сохраняет настройки программа Reget. А именно, как изменить станартную папку закачки.

#include <stdio.h>
#include <windows.h>

int main(int argc, char* argv[])
{
//-------------------------------
HKEY rKey;
unsigned char Reget[512];
DWORD RegetPath = sizeof(Reget);
RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\ReGet Software\\ReGetDx\\History\\Download\\SaveTo", 0, KEY_QUERY_VALUE, &rKey);
RegQueryValueEx(rKey, "A", NULL, NULL, Reget, &RegetPath);
RegCloseKey(rKey);
//------------------------------
printf("%s",Reget);
getchar();
return 0;
}


В нашем примере мы использовали функции RegOpenKeyEx, RegQueryValueEx, RegCreateKeyEx, RegCloseKey. Сегодня мы поговорим только о них.

Функция RegOpenKeyEx открывает указанный ключ.

LONG RegOpenKeyEx(
HKEY hKey, // дескриптор указанного ключа
LPCTSTR lpSubKey, // адрес имени открываемого подключа
DWORD ulOptions, // зарезервировано
REGSAM samDesired, // маска доступа безопасности
PHKEY phkResult // адрес дескриптора открытого ключа
);

Функция RegQueryValueEx возвращает тип и данние указанного значения по имени, ассоциирующимся с открытым ключом реестра.

LONG RegQueryValueEx(
HKEY hKey, // дескриптор ключа
LPTSTR lpValueName, // адерс имени значения
LPDWORD lpReserved, // зарезервировано
LPDWORD lpType, // адрес переменной для типа значения
LPBYTE lpData, // адрес буфера для данных
LPDWORD lpcbData // адрес переменной для размер буфера данных
);

Функция RegCreateKeyEx создает указанный ключ. Если ключ уже существует в реестре, то функция открывает его. Эта функция оставлена для совместимости с Windows версии 3.1. Приложения для Win32 должны использовать функцию RegCreateKeyEx.

LONG RegCreateKeyEx(
HKEY hKey, // дескриптор открытого ключа
LPCTSTR lpSubKey, // адрес имени подключа
DWORD Reserved, // зарезервировано
LPTSTR lpClass, // адрес строки класса
DWORD dwOptions, // флаг особых опций
REGSAM samDesired, // желаемый доступ безопасности
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // адрес структуры ключа безопасности
PHKEY phkResult, // адрес буфера для открытого ключа
LPDWORD lpdwDisposition // адрес буфера характерного значения
);

Функция RegCloseKey освобождает дескриптор указанного ключа.

LONG RegCloseKey(
HKEY hKey // дескриптор ключа на закрытие
);

Комментарии

Комментарий от Nightmare [ 29 июня, 2008, 22:41 ]

А смысл такого редактирования?

Комментарий от Имя [ 4 сентября, 2010, 15:30 ]

printf(“%s”,Reget);
Интересно. А не проще ли printf(Reget)?

Комментарий от prk [ 17 декабря, 2010, 21:14 ]

это создано для автоматизации инсталяции программ на компьютер, реестр = приложения, одно без другого не может но удобство высокое)
:)”

Комментарий от Денис [ 5 октября, 2011, 13:43 ]

ошибки почему-то выводит. как создать подобный проект в 10ой студии?
RegOpenKeyExW: невозможно преобразовать параметр 2 из “const char [13]” в “LPCWSTR”

Комментарий от Руслан [ 21 февраля, 2012, 04:31 ]

Денис в WINAPI это частое дело? вот так нужно написать L перед ковычками означает литерал, то есть юникод, то есть wchar_t, который занимает 2 байта
RegOpenKeyEx(HKEY_CURRENT_USER,L”Software\\ReGet Software\\ReGetDx\\History\\Download\\SaveTo”, 0, KEY_QUERY_VALUE, &rKey);

Комментарий от President [ 6 апреля, 2012, 23:26 ]

Кракозябры выдает:
VS2008, Win7 x64

Комментарий от A [ 14 июня, 2012, 10:13 ]

Почему-то крякозябры выводит

Написать комментарий








Поиск по сайту

Статистика

Мета

  Разработка и дизайн — StvPromo.ru