Я написал небольшое консольное приложение C ++ для установки раздела реестра Windows.В частности, я меняю флажок «Использовать прокси-сервер для вашей локальной сети» в диалоговом окне «Свойства обозревателя», показанном ниже:
Вот кодчто я использую, чтобы установить этот ключ.Я могу подтвердить, что ключ реестра обновляется успешно, и я могу подтвердить, что флажок диалогового окна также отражает эти изменения.Однако проблема, с которой я сталкиваюсь, заключается в том, что эффект на самом деле не происходит в операционной системе.
const DWORD ENABLED_VALUE = 1;
const DWORD DISABLED_VALUE = 0;
const LPCWSTR REGISTRY_KEY_LOCATION = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings");
const LPCWSTR REGISTRY_KEY_NAME = TEXT("ProxyEnable");
PHKEY OpenRegistryKey(PHKEY key) {
LONG err = RegOpenKey(HKEY_CURRENT_USER, REGISTRY_KEY_LOCATION, key);
if (err != ERROR_SUCCESS) {
cout << "Unable to open registry key.\n";
}
return key;
}
void SetProxy(DWORD value) {
HKEY key;
OpenRegistryKey(&key);
LONG err = RegSetValueEx(key, REGISTRY_KEY_NAME, 0, REG_DWORD, (const BYTE*)&value, sizeof(value));
if (err != ERROR_SUCCESS) {
cout << "Unable to set registry value ProxyEnable.\n";
cout << err;
}
RegCloseKey(key);
}
Поэтому, если я использую приведенный выше код для включения прокси-сервера, прокси-сервер все еще не включен, несмотря на проверку обновления как в реестре, так и в диалоговом окне.Однако, если я просто открою диалоговое окно на изображении выше, убедитесь, что флажок изменился, а затем просто нажмите «ОК», изменение вступит в силу и изменится статус прокси.
Проверка, действительно ли прокси включенлегко, так как я делаю всю свою работу по VPN: если прокси действительно включен, я могу просматривать Интернет.Если он отключен, каждая попытка попасть по URL-адресу в браузере прерывается или выдает ошибку.
Итак, мне кажется, что мне не хватает какого-то шага «подтвердить изменение», когда изменение распространяетсяво всей среде Windows.Я пытался использовать RegFlushKey после обновления реестра, но это ничего не изменило.Как я могу получить обновления реестра для Windows?