Я тут себе несколько функций накидал для работы с реестром.
| Код | #include <windows.h> #include <windowsx.h> #include <tchar.h>
#define MAX_TXT 260 //--------------------------------------------------------------------------- bool RegCreateKey(HKEY RootKey, LPCTSTR SubKey) { HKEY hKey;
if(RegCreateKeyEx(RootKey, SubKey, NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; }
return TRUE; }
//--------------------------------------------------------------------------- bool RegKeyExist(HKEY RootKey, LPCTSTR SubKey) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; }
return TRUE; }
//--------------------------------------------------------------------------- bool RegWriteInteger(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name, DWORD Value) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_WRITE, &hKey) == ERROR_SUCCESS) { if(RegSetValueEx(hKey, Name, NULL, REG_DWORD, (LPBYTE)&Value, sizeof(DWORD)) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; }
//--------------------------------------------------------------------------- bool RegWriteString(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name, LPCTSTR Value) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_WRITE, &hKey) == ERROR_SUCCESS) { if(RegSetValueEx(hKey, Name, NULL, REG_SZ, (LPBYTE)Value, (lstrlen(Value)+1)*sizeof(TCHAR) ) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; }
//---------------------------------------------------------------------------
bool RegDelValue(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_WRITE, &hKey) == ERROR_SUCCESS) { if(RegDeleteValue(hKey, Name) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; } //---------------------------------------------------------------------------
bool RegValueExist(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { if(RegQueryValueEx(hKey, Name, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { RegCloseKey(hKey); return TRUE; } else { RegCloseKey(hKey); return FALSE; } }
return FALSE; } //---------------------------------------------------------------------------
bool RegDelKey(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { if(RegDeleteKey(hKey, Name) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; }
//---------------------------------------------------------------------------
DWORD RegGetInteger(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name) { HKEY hKey; DWORD SizeValue = sizeof(DWORD); DWORD RetValue; DWORD ValueType = REG_DWORD;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_READ | KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { if(RegQueryValueEx(hKey, Name, NULL, &ValueType, (LPBYTE)&RetValue, &SizeValue) == ERROR_SUCCESS) { RegCloseKey(hKey); return RetValue; } else { RegCloseKey(hKey); return 0xFFFFFFFF; } } else { return 0xFFFFFFFF; } } //---------------------------------------------------------------------------
bool RegGetString(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name, LPCTSTR Value) { HKEY hKey; DWORD SizeValue = MAX_TXT; DWORD RetValue; DWORD ValueType = REG_SZ;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_READ | KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { if(RegQueryValueEx(hKey, Name, NULL, &ValueType, (LPBYTE)Value, &SizeValue) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; } //--------------------------------------------------------------------------- bool RegWriteBinary(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name, LPCSTR Value, int Size) { HKEY hKey;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_WRITE, &hKey) == ERROR_SUCCESS) { if(RegSetValueEx(hKey, Name, NULL, REG_BINARY, (LPBYTE)Value, Size) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; }
//---------------------------------------------------------------------------
bool RegGetBinary(HKEY RootKey, LPCTSTR SubKey, LPCTSTR Name, LPCSTR Value, int Size) { HKEY hKey; DWORD SizeValue = Size; DWORD RetValue; DWORD ValueType = REG_BINARY;
if(RegOpenKeyEx(RootKey, SubKey, NULL, KEY_READ | KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { if(RegQueryValueEx(hKey, Name, NULL, &ValueType, (LPBYTE)Value, &SizeValue) == ERROR_SUCCESS) { RegCloseKey(hKey); return FALSE; } else { RegCloseKey(hKey); return TRUE; } }
return TRUE; } //---------------------------------------------------------------------------
|
Пример
| Код | TCHAR *SubKey = _T("SOFTWARE\\Proba"); int Count = 10; RegWriteInteger(HKEY_CURRENT_USER, SubKey, _T("Count"), Count))
|
|