mirror of https://github.com/OpenVPN/openvpn-gui
Create connection keys inside configs and only if needed
Signed-off-by: Selva Nair <selva.nair@gmail.com>pull/52/head
parent
5880fdcd02
commit
3ce7466b20
17
registry.c
17
registry.c
|
@ -317,14 +317,14 @@ SetRegistryValueNumeric(HKEY regkey, const TCHAR *name, DWORD data)
|
|||
}
|
||||
|
||||
/*
|
||||
* Open HKCU\Software\OpenVPN-GUI\config-name (create if doesn't exist).
|
||||
* Open HKCU\Software\OpenVPN-GUI\configs\config-name.
|
||||
* The caller must close the key. Returns 1 on success.
|
||||
*/
|
||||
static int
|
||||
OpenConfigRegistryKey(const WCHAR *config_name, HKEY *regkey)
|
||||
OpenConfigRegistryKey(const WCHAR *config_name, HKEY *regkey, BOOL create)
|
||||
{
|
||||
DWORD status;
|
||||
const WCHAR fmt[] = L"SOFTWARE\\OpenVPN-GUI\\%s";
|
||||
const WCHAR fmt[] = L"SOFTWARE\\OpenVPN-GUI\\configs\\%s";
|
||||
int count = (wcslen(config_name) + wcslen(fmt) + 1);
|
||||
WCHAR *name = malloc(count * sizeof(WCHAR));
|
||||
|
||||
|
@ -334,8 +334,11 @@ OpenConfigRegistryKey(const WCHAR *config_name, HKEY *regkey)
|
|||
_snwprintf(name, count, fmt, config_name);
|
||||
name[count-1] = L'\0';
|
||||
|
||||
if (!create)
|
||||
status = RegOpenKeyEx (HKEY_CURRENT_USER, name, 0, KEY_READ | KEY_WRITE, regkey);
|
||||
else
|
||||
/* create if key doesn't exist */
|
||||
status = RegCreateKeyEx(HKEY_CURRENT_USER, name, 0, NULL,
|
||||
status = RegCreateKeyEx(HKEY_CURRENT_USER, name, 0, NULL,
|
||||
REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, NULL, regkey, NULL);
|
||||
free (name);
|
||||
|
||||
|
@ -348,7 +351,7 @@ SetConfigRegistryValueBinary(const WCHAR *config_name, const WCHAR *name, const
|
|||
HKEY regkey;
|
||||
DWORD status;
|
||||
|
||||
if (!OpenConfigRegistryKey(config_name, ®key))
|
||||
if (!OpenConfigRegistryKey(config_name, ®key, TRUE))
|
||||
return 0;
|
||||
status = RegSetValueEx(regkey, name, 0, REG_BINARY, data, len);
|
||||
RegCloseKey(regkey);
|
||||
|
@ -368,7 +371,7 @@ GetConfigRegistryValue(const WCHAR *config_name, const WCHAR *name, BYTE *data,
|
|||
DWORD type;
|
||||
HKEY regkey;
|
||||
|
||||
if (!OpenConfigRegistryKey(config_name, ®key))
|
||||
if (!OpenConfigRegistryKey(config_name, ®key, FALSE))
|
||||
return 0;
|
||||
status = RegQueryValueEx(regkey, name, NULL, &type, data, &len);
|
||||
RegCloseKey(regkey);
|
||||
|
@ -384,7 +387,7 @@ DeleteConfigRegistryValue(const WCHAR *config_name, const WCHAR *name)
|
|||
DWORD status;
|
||||
HKEY regkey;
|
||||
|
||||
if (!OpenConfigRegistryKey(config_name, ®key))
|
||||
if (!OpenConfigRegistryKey(config_name, ®key, FALSE))
|
||||
return 0;
|
||||
status = RegDeleteValue(regkey, name);
|
||||
RegCloseKey(regkey);
|
||||
|
|
Loading…
Reference in New Issue