СообЧа > База Знаний > Программирование > C, С++

Вопрос

Версия языка: Visual C++ 6.0
Хотелось бы узнать, как с помощью с++ можно импортировать информацию в реестр? И вообще есть ли в инете документация на эту тему (с++ & regedit)?

Ответ

Для работы с реестром существуют функции Reg…, там их много, так что приведу только необходимые.

Все эти функции лежат в Advapi32.lib, а прописаны в Winreg.h
RegCreateKey(HKEY hKey,char *Subkey,HKEY *Ret) — создает и открывает ключ(папку) в реестре.
hKey(здесь и далее) — какой либо открытый ключ(открывается

RegOpenKey(см. ниже)) или один из предопределенных ключей:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

Для Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
Для Windows 95/98/Me: HKEY_DYN_DATA

Subkey(здесь и далее) — имя подключа для создания, открытия, удаления.

Ret(здесь и далее) — возвращаемое значение(handler на ключ).
После использования должен быть закрыт RegCloseKey(см. ниже)
RegOpenKey(HKEY hKey,char *Subkey,HKEY *Ret)
Открывает уже существующий ключ.
RegCloseKey(HKEY hKey)
Закрывает ключ.
hKey — открытый ключ.
RegDeleteKey(HKEY hKey,char *Subkey)
Удаляет ключ.
RegSetValueEx(HKEY hKey,char *ValueName,DWORD Reserv,DWORD Type,
BYTE *Data,DWORD DataSize)

Создает и устанавливает «Значение» в ключе.
ValueName(здесь и далее) — имя значения.
Reserv — должен быть ноль.
Type — тип устанавливаемого значения:
REG_BINARY
REG_DWORD
REG_EXPAND_SZ
REG_MULTI_SZ
REG_NONE
REG_QWORD
REG_SZ

Data — то что ставим.

DataSize — размер Data'ы.
RegDeleteValue(HKEY hKey,char *ValueName)
Удаляет значение.

Пример:
Надо под ключом «HKEY_LOCAL_MACHINE\HARDWARE» создать два ключа «aaa» и «bbb», под «aaa» создать ключ «ccc», в каждом создать по значению,потом «bbb» и «ccc» удалить.

#include <
windows.h>
#include <
winreg.h>
void main(void) { HKEY K,K1,K2,K3; DWORD Val;
RegOpenKey(HKEY_LOCAL_MACHINE,"
HARDWARE"
,&K);
RegCreateKey(K,"
aaa\\ccc"
,&K3);
RegCreateKey(K,"bbb"
,&K2);
RegOpenKey(K,"aaa",&K1);
RegSetValueEx(K1,"aaaval"
,0,REG_SZ,(BYTE*)"string"
,7);
//(!) Val = 142;
RegSetValueEx(K2,"bbbval",0,REG_DWORD,(BYTE*)&Val,4);
RegSetValueEx(K3,"cccval",0,REG_BINARY,(BYTE*)&Val,4);
RegDeleteValue(K2,"bbbval");
RegDeleteValue(K3,"cccval");
RegCloseKey(K2);
RegCloseKey(K3);
RegDeleteKey(K,"bbb");
RegDeleteKey(K1,"ccc");
RegCloseKey(K1);
};


Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация