2 * Copyright (c) 1997 Cygnus Solutions
4 * Author: Michael Graff
14 registry_open(HKEY hkey, char *base, REGSAM sam)
16 HKEY k = INVALID_HANDLE_VALUE;
20 * if the base path is null, return the already open key in hkey
25 err = RegOpenKeyEx(hkey, base, 0, sam, &hkey);
26 if (err != ERROR_SUCCESS)
27 return INVALID_HANDLE_VALUE;
33 registry_close(HKEY hkey)
39 registry_key_create(HKEY hkey, char *sub, REGSAM sam)
45 err = RegCreateKeyEx(hkey, sub, 0, 0, REG_OPTION_NON_VOLATILE, sam,
47 if (err != ERROR_SUCCESS)
48 return INVALID_HANDLE_VALUE;
54 registry_key_delete(HKEY hkey, char *sub)
58 err = RegDeleteKey(hkey, sub);
59 if (err != ERROR_SUCCESS)
66 registry_string_get(HKEY hkey, char *sub, char **val)
72 err = RegQueryValueEx(hkey, sub, 0, &type, 0, &datasize);
73 if (err != ERROR_SUCCESS || type != REG_SZ) {
78 *val = malloc(datasize);
82 err = RegQueryValueEx(hkey, sub, 0, &type, *val, &datasize);
83 if (err != ERROR_SUCCESS) {
93 registry_dword_get(HKEY hkey, char *sub, DWORD *val)
99 err = RegQueryValueEx(hkey, sub, 0, &type, 0, &datasize);
100 if (err != ERROR_SUCCESS || type != REG_DWORD) {
105 err = RegQueryValueEx(hkey, sub, 0, &type, (BYTE *)val, &datasize);
106 if (err != ERROR_SUCCESS) {
115 registry_string_set(HKEY hkey, char *sub, char *x)
119 err = RegSetValueEx(hkey, sub, 0, REG_SZ, (BYTE *)x, (DWORD)strlen(x) + 1);
120 if (err != ERROR_SUCCESS)
127 registry_dword_set(HKEY hkey, char *sub, DWORD x)
131 err = RegSetValueEx(hkey, sub, 0, REG_DWORD, (CONST BYTE *)&x, sizeof(DWORD));
132 if (err != ERROR_SUCCESS)
139 registry_keyval_dword_set(HKEY hkey, char *base, char *sub, DWORD val)
144 k = registry_open(hkey, base, KEY_WRITE);
145 if (k == INVALID_HANDLE_VALUE)
148 err = registry_dword_set(k, sub, val);
156 registry_keyval_dword_get(HKEY hkey, char *base, char *sub, DWORD *val)
161 k = registry_open(hkey, base, KEY_READ);
162 if (k == INVALID_HANDLE_VALUE)
165 err = registry_dword_get(k, sub, val);
173 registry_keyval_string_get(HKEY hkey, char *base, char *sub, char **val)
178 k = registry_open(hkey, base, KEY_READ);
179 if (k == INVALID_HANDLE_VALUE) {
184 err = registry_string_get(k, sub, val);
192 registry_keyval_string_set(HKEY hkey, char *base, char *sub, char *val)
197 k = registry_open(hkey, base, KEY_WRITE);
198 if (k == INVALID_HANDLE_VALUE)
201 err = registry_string_set(k, sub, val);
209 registry_value_delete(HKEY hkey, char *sub)
211 if (RegDeleteValue(hkey, sub))
218 registry_keyval_delete(HKEY hkey, char *base, char *sub)
223 k = registry_open(hkey, base, KEY_WRITE);
224 if (k == INVALID_HANDLE_VALUE)
227 err = registry_value_delete(k, sub);