1

Windows 7 (64-разрядная версия) Отключить прокси через cmd - и применить?

Я нашел правильный ключ реестра для изменения, и у меня есть код для его изменения.

reg add    "HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0

Найдено через

gpresults /h "%userprofile%\desktop\RSPO.html"

Запуск 'reg add' меняет ключ reg, тот же ключ, который меняется, когда я открываю IE (как администратор) и выключаю настройки прокси-сервера локальной сети вручную.

Однако, когда я делаю это вручную, происходит желаемый эффект - у меня больше нет проблем с прокси. Но через мой cmd-скрипт ключ меняется, но у меня все еще есть проблемы с прокси. Когда я открываю настройки прокси-сервера локальной сети в IE, он все еще включен.

Как мне изменить ключ reg и привести его в действие?

Пробовал менять кучу ключей реестра ...

Текущий скрипт ...

reg add "HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0

reg add "HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0

2 ответа2

1

К сожалению, нет простого пути. Как вы заметили, вам не хватает волшебной команды «читать эти настройки сейчас»:

InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, NULL)
InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, NULL)

Конечно, вы не можете просто вызвать функцию C из cmd . Однако существует (относительно) жизнеспособный способ сделать это с помощью PowerShell:

function Reload-InternetOptions
{
  $signature = @'
[DllImport("wininet.dll", SetLastError = true, CharSet=CharSet.Auto)]
public static extern bool InternetSetOption(IntPtr hInternet, int
dwOption, IntPtr lpBuffer, int dwBufferLength);
'@
  $interopHelper = Add-Type -MemberDefinition $signature -Name MyInteropHelper -PassThru

  $INTERNET_OPTION_SETTINGS_CHANGED = 39
  $INTERNET_OPTION_REFRESH = 37

  $result1 = $interopHelper::InternetSetOption(0, $INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)
  $result2 = $interopHelper::InternetSetOption(0, $INTERNET_OPTION_REFRESH, 0, 0)

  $result1 -and $result2
}

Просто вызовите это так: Reload-InternetOptions . В случае успеха он вернет True .

Обратите внимание, что этот метод динамически создает некоторые вещи при каждом запуске. Он не может быть выгружен PowerShell и будет накапливаться до тех пор, пока вы не выйдете из процесса PowerShell, который запустил метод.

0

Настройки IE являются индивидуальными для каждого пользователя, поэтому я думаю, что вы просто указали неправильный ключ реестра.

Например, чтобы отключить наш прокси-флажок для всего домена, мы используем сценарий входа в систему, чтобы отключить его здесь:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .