1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
void *get_key_value(int type, void *buf, char *subkey, char *value) {
unsigned long sz;
char temp [1024];
HKEY hkey = NULL;
PHKEY phkey = &hkey;
long err;
assert(regkey);
strcat(strcat(strcpy(temp, regkey), "\\"), subkey);
err = RegCreateKeyExA(HKEY_CURRENT_USER, temp,
0, NULL, REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY | KEY_QUERY_VALUE | KEY_SET_VALUE,
NULL, phkey, NULL);
if(err != ERROR_SUCCESS)
ErrorExitCode(err);
RegQueryValueExA(hkey, value, NULL, NULL, NULL, &sz);
printf("querying key %s/%s, size %d\n", subkey, value, sz);
err = RegQueryValueExA(hkey, value, NULL, NULL, buf, &sz);
if(err != ERROR_SUCCESS)
ErrorExitCode(err);
RegCloseKey(hkey);
return buf;
}
int get_key_value_int(const char *subkey, const char *value, const int def) {
static int v;
return ((*((int *)get_key_value(REG_DWORD, &v, subkey, value))) != 0) ? v : def;
}
char *get_key_value_string(const char *subkey, const char *value, char *buf, const char *def) {
return ((*((char *)get_key_value(REG_DWORD, &buf, subkey, value))) != NULL) ? buf : strcpy(buf, def);
}
|