Перед вами
очередной выпуск рассылки "Программирование на WinApi" Переводы многих функций Win32API, которые часто используются
в данной рассылке, вы можете получать, подписавшись на дружественную
рассылку "WinAPI на
русском". Справочник по функциям Win32API вы
можете посмотреть на сайте BcbDev.ru в разделе MSDN
по-русски.
Работа с
реестром
Следующий код показывает приемы работы с
функциями
реестра...
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
// Ok, мы создали директорию и сохраняем целое число и строку..
unsigned long IsNew = 0;
// RegCreateKeyEx должен вернуть значение, которое указывает, создали ли мы раздел или
// он уже существовала...
// Значение: (REG_CREATED_NEW_KEY)1 = создали, (REG_OPENED_EXISTING_KEY) 2 = существовал
HKEY hregkey;
// Здесь мы создаем раздел с названием: "TESTING"
long res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "Software\\TESTING",
NULL, NULL, NULL, KEY_WRITE, NULL, &hregkey, &IsNew);
if (res == 0) //Если успешно создали
{
// Сохраняем строку
char str[256];
strcpy(str, "Hello Registry");
RegSetValueEx(hregkey, "String", 0, REG_SZ, (const unsigned char *)str, strlen(str));
// Теперь число
int num = 128;
RegSetValueEx(hregkey, "Number", 0, REG_DWORD, (const unsigned char *)&num, sizeof(num));
//Не забываем закрыть ключ...
RegCloseKey(hregkey);
}
//Теперь давайте прочтем то, что мы записали, чтобы удостовериться, что это действительно работает :)
char temp[256];
int getnum = 0;
res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\TESTING", 0, KEY_ALL_ACCESS, &hregkey);
// Заметьте, что мы вызываем RegOPENKeyEx...
if (res == 0)
{
// Давайте сначала cчитаем строку
int datasize = 256; // Максимальная длина temp;
RegQueryValueEx(hregkey, "String",
NULL, NULL, (unsigned char *)&temp, (unsigned long *)&datasize);
MessageBox(NULL, temp, "Мы получили строку:", MB_OK);
// теперь число
datasize = sizeof(int); // Максимальная длина getnum
RegQueryValueEx(hregkey, "Number",
NULL, NULL, (unsigned char *)&getnum, (unsigned long *)&datasize);
itoa(getnum, temp, 10);
MessageBox(NULL, temp, "Мы получили число", MB_OK);
//Теперь удалим элемент Number
RegDeleteValue(hregkey, "Number");
//Теперь удаляем раздел который мы создали , "TESTING"
RegDeleteKey(HKEY_LOCAL_MACHINE, "Software\\TESTING");
// Хорошо. Мы не должны вызывать RegCloseKey так как ключ уже удален..
// Но если мы не удаляли ключ, надо не забыть сделать это
// RegCloseKey(hregkey);
}
return(1);
}