X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fos.c;h=c76851345ca2d9602cbdd7b5d56513cfc77cc2e0;hb=860eb8fcabf038906e2038a914a643ce35eb6a52;hp=1554d35af685d8091411f7472df615dfde754053;hpb=6c3ab5574d31504d24710c2756899d49275c1a37;p=swftools.git diff --git a/lib/os.c b/lib/os.c index 1554d35..c768513 100755 --- a/lib/os.c +++ b/lib/os.c @@ -45,19 +45,26 @@ char* getRegistryEntry(char*path) 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, (LPDWORD)&size) ; - if(rc != ERROR_SUCCESS) { + if(rc) { fprintf(stderr, "RegQueryValueEx(1) failed: %d\n", rc); return 0; } buf = (char*)malloc(size+1); rc = RegQueryValueEx(key, NULL, 0, &type, (BYTE*)buf, (LPDWORD)&size); - if(rc != ERROR_SUCCESS) { + if(rc) { fprintf(stderr, "RegQueryValueEx(2) failed: %d\n", rc); return 0; } @@ -70,19 +77,25 @@ char* getRegistryEntry(char*path) } 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; }