long size = 0;
DWORD type;
char*buf;
- rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS/* KEY_READ*/, &key);
- if (rc != ERROR_SUCCESS) {
+ rc = RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_ALL_ACCESS, &key);
+ if(rc)
+ rc = RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_READ, &key);
+ if(rc)
+ rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS, &key);
+ if(rc)
+ rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_READ, &key);
+
+ if (rc) {
fprintf(stderr, "RegOpenKeyEx failed\n");
return 0;
}
- rc = RegQueryValueEx(key, NULL, 0, 0, 0, &size) ;
- if(rc != ERROR_SUCCESS) {
+ rc = RegQueryValueEx(key, NULL, 0, 0, 0, (LPDWORD)&size) ;
+ if(rc) {
fprintf(stderr, "RegQueryValueEx(1) failed: %d\n", rc);
return 0;
}
- buf = malloc(size+1);
- rc = RegQueryValueEx(key, NULL, 0, &type, (BYTE*)buf, &size);
- if(rc != ERROR_SUCCESS) {
+ buf = (char*)malloc(size+1);
+ rc = RegQueryValueEx(key, NULL, 0, &type, (BYTE*)buf, (LPDWORD)&size);
+ if(rc) {
fprintf(stderr, "RegQueryValueEx(2) failed: %d\n", rc);
return 0;
}
} else if(type == REG_BINARY) {
return buf;
}
+ return 0;
}
int setRegistryEntry(char*key,char*value)
{
- HKEY hkey;
- int ret = 0;
- ret = RegCreateKey(HKEY_LOCAL_MACHINE, key, &hkey);
- if(ret != ERROR_SUCCESS) {
+ HKEY hkey1;
+ HKEY hkey2;
+ int ret1 = 0, ret2=0;
+ ret1 = RegCreateKey(HKEY_CURRENT_USER, key, &hkey1);
+ ret2 = RegCreateKey(HKEY_LOCAL_MACHINE, key, &hkey2);
+ if(ret1 && ret2) {
fprintf(stderr, "registry: CreateKey %s failed\n", key);
return 0;
}
- ret = RegSetValue(hkey, NULL, REG_SZ, value, strlen(value)+1);
- if(ret != ERROR_SUCCESS) {
+ if(!ret1)
+ ret1 = RegSetValue(hkey1, NULL, REG_SZ, value, strlen(value)+1);
+ if(!ret2)
+ ret2 = RegSetValue(hkey2, NULL, REG_SZ, value, strlen(value)+1);
+ if(ret1 && ret2) {
fprintf(stderr, "registry: SetValue %s failed\n", key);
return 0;
}
while(pos < l2 && add[pos] == seperator)
pos++;
- n = malloc(l1 + (l2-pos) + 2);
+ n = (char*)malloc(l1 + (l2-pos) + 2);
memcpy(n,base,l1);
n[l1]=seperator;
strcpy(&n[l1+1],&add[pos]);
return dir;
}
-char* mktempname(const char*ptr) {
+char* mktempname(char*ptr) {
static char tmpbuf[128];
char*dir = getTempDir();
int l = strlen(dir);