codice:
//Registry class
#include <winreg.h>
//****************************************
//Funzioni create da
//*** Paolo Infante ***
//L'uso di queste funzioni nelle vostre applicazioni e' garantito per fini personali e commerciali.
//La distribuzione del sorgente di questa classe (o la vendita) sono ASSOLUTAMENTE proibiti //se non consentiti da Paolo Infante, e sono punibili a norma della legge sul Copyright.
//
//L'autore,
//Paolo Infante.
//****************************************
bool CreateKey(HKEY BaseKey, const char * SubKeyName, LPWORD dwOptions = REG_OPTION_NON_VOLATILE)
{
HKEY point_out;
DWORD result;
LONG ret_var = RegCreateKeyEx(BaseKey, SubKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &point_out, &result);
if (ret_var==ERROR_SUCCESS)
return true;
if (ret_var!=0)
return false;
return true;
}
bool DeleteKey(HKEY BaseKey, const char * SubKeyName)
{
LONG ret_val = RegDeleteKey(BaseKey, SubKeyName);
if (ret_val==ERROR_SUCCESS)
return true;
if (ret_val != 0)
return false;
return false;
}
bool DeleteValue(HKEY BaseKey, const char * SubKeyName, const char * ValueName)
{
HKEY result;
LONG ret_val = RegOpenKeyEx(BaseKey, SubKeyName, 0, KEY_ALL_ACCESS, &result);
if (ret_val != ERROR_SUCCESS)
return false;
LONG ret_val_2 = RegDeleteValue(result, ValueName);
if (ret_val_2==ERROR_SUCCESS)
return true;
if (ret_val_2!=0)
return false;
return false;
}
bool QueryValue(HKEY BaseKey, const char * SubKeyName, const char * ValueName, LPDWORD outValueType, LPBYTE out_data, LPDWORD size_out_data)
{
HKEY result;
LONG ret_val = RegOpenKeyEx(BaseKey, SubKeyName, 0, KEY_ALL_ACCESS, &result);
if (ret_val != ERROR_SUCCESS)
return false;
LONG ret_val2 = RegQueryValueEx(result, ValueName, 0, outValueType, out_data, size_out_data);
if (ret_val2==ERROR_SUCCESS)
return true;
if (ret_val2!=0)
return false;
return false;
}
bool SetValue(HKEY BaseKey, const char * SubKeyName, const char * ValueName, DWORD ValueType, const BYTE * in_data)
{
HKEY result;
LONG ret_val = RegOpenKeyEx(BaseKey, SubKeyName, 0, KEY_ALL_ACCESS, &result);
if (ret_val != ERROR_SUCCESS)
return false;
LONG ret_val2 = RegSetValueEx(result, ValueName, 0, ValueType, in_data, sizeof(in_data));
if (ret_val==ERROR_SUCCESS)
return true;
if (ret_val!=0)
return false;
return false;
}
bool QueryString(HKEY BaseKey, const char * SubKeyName, const char * ValueName, LPSTR OutValue)
{
HKEY result;
LONG ret_val = RegOpenKeyEx(BaseKey, SubKeyName, 0, KEY_ALL_ACCESS, &result);
if (ret_val != ERROR_SUCCESS)
return false;
DWORD dummy;
LONG ret_val2 = RegQueryValueEx(result, ValueName, 0, NULL, (LPBYTE)OutValue, &dummy);
if (ret_val2==ERROR_SUCCESS)
return true;
if (ret_val2!=0)
return false;
return false;
}
bool SetString(HKEY BaseKey, const char * SubKeyName, const char * ValueName, LPSTR ValueString)
{
HKEY result;
LONG ret_val = RegOpenKeyEx(BaseKey, SubKeyName, 0, KEY_ALL_ACCESS, &result);
if (ret_val != ERROR_SUCCESS)
return false;
LONG ret_val2 = RegSetValueEx(result, ValueName, 0, REG_SZ, (BYTE*)ValueString, sizeof(ValueString)+1);
if (ret_val==ERROR_SUCCESS)
return true;
if (ret_val!=0)
return false;
return false;
}
non l'ho testata però dovrebbe funzionare. basta che la aggiungi ad un progetto C e poi ne richiami le varie funzioni.
codice:
bool SetString(HKEY BaseKey, const char * SubKeyName, const char * ValueName, LPSTR ValueString)
bool QueryString(HKEY BaseKey, const char * SubKeyName, const char * ValueName, LPSTR OutValue)
bool SetValue(HKEY BaseKey, const char * SubKeyName, const char * ValueName, DWORD ValueType, const BYTE * in_data)
bool QueryValue(HKEY BaseKey, const char * SubKeyName, const char * ValueName, LPDWORD outValueType, LPBYTE out_data, LPDWORD size_out_data)
bool DeleteValue(HKEY BaseKey, const char * SubKeyName, const char * ValueName)
bool DeleteKey(HKEY BaseKey, const char * SubKeyName)
bool CreateKey(HKEY BaseKey, const char * SubKeyName, LPWORD dwOptions = REG_OPTION_NON_VOLATILE)
un'esempio: