44 status = ::RegOpenCurrentUser(KEY_QUERY_VALUE | KEY_SET_VALUE, hkcu.
ref());
45 check_reg_error<proxy_error>(status,
"RegOpenCurrentUser");
47 status = ::RegCreateKeyExA(hkcu(),
key_name, 0, NULL, 0, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, key.
ref(), NULL);
48 check_reg_error<proxy_error>(status,
key_name);
53 save_key(key,
"ProxyEnable",
"0",
false);
62 if (!imp.is_local_system())
66 InternetSetOptionA(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
67 InternetSetOptionA(NULL, INTERNET_OPTION_REFRESH, NULL, 0);
75 char prev_val_str[1024] = {0};
77 DWORD prev_buf_size = str ?
sizeof(prev_val_str) :
sizeof(prev_val_dword);
81 status = ::RegOpenCurrentUser(KEY_QUERY_VALUE | KEY_SET_VALUE, hkcu.
ref());
82 check_reg_error<proxy_error>(status,
"RegOpenCurrentUser");
85 std::string prev_key_name =
sname + key;
86 status = ::RegGetValueA(hkcu(),
88 prev_key_name.c_str(),
89 str ? RRF_RT_REG_SZ : RRF_RT_REG_DWORD,
91 str ? (PVOID)prev_val_str : (PVOID)&prev_val_dword,
93 check_reg_error<proxy_error>(status, prev_key_name);
95 RegDeleteValueA(regkey(), prev_key_name.c_str());
104 ::RegDeleteValueA(regkey(), key.c_str());
106 ::RegSetValueExA(regkey(),
109 str ? REG_SZ : REG_DWORD,
110 str ?
reinterpret_cast<const BYTE *
>(prev_val_str) :
reinterpret_cast<CONST BYTE *
>(&prev_val_dword),
111 str ?
static_cast<DWORD
>(strlen(prev_val_str) + 1) :
sizeof(prev_val_dword));
117 char prev_val_str[1024] = {0};
118 DWORD prev_val_dword;
119 DWORD prev_buf_size = str ?
sizeof(prev_val_str) :
sizeof(prev_val_dword);
122 status = ::RegOpenCurrentUser(KEY_QUERY_VALUE | KEY_SET_VALUE, hkcu.
ref());
123 check_reg_error<proxy_error>(status,
"RegOpenCurrentUser");
126 status = ::RegGetValueA(hkcu(),
129 str ? RRF_RT_REG_SZ : RRF_RT_REG_DWORD,
131 str ? (PVOID)prev_val_str : (PVOID)&prev_val_dword,
135 case ERROR_FILE_NOT_FOUND:
142 check_reg_error<proxy_error>(status, key);
147 std::string prev_key_name =
sname + key;
148 status = ::RegSetValueExA(regkey(),
149 prev_key_name.c_str(),
151 str ? REG_SZ : REG_DWORD,
152 str ?
reinterpret_cast<const BYTE *
>(prev_val_str) :
reinterpret_cast<CONST BYTE *
>(&prev_val_dword),
153 str ?
static_cast<DWORD
>(strlen(prev_val_str) + 1) :
sizeof(prev_val_dword));
154 check_reg_error<proxy_error>(status, prev_key_name);
159 val_dword = std::atol(value.c_str());
160 status = ::RegSetValueExA(regkey(),
163 str ? REG_SZ : REG_DWORD,
164 str ?
reinterpret_cast<const BYTE *
>(value.c_str()) :
reinterpret_cast<CONST BYTE *
>(&val_dword),
165 str ?
static_cast<DWORD
>(value.length() + 1) :
sizeof(val_dword));
166 check_reg_error<proxy_error>(status, key);