Подтвердить что ты не робот

Какой ключ в реестре Windows отключает параметр подключения IE "Автоматическое определение настроек"?

Я пытаюсь установить все настройки соединения в IE.

Я нашел, как изменить большинство из них, в пути:

HKEY_CURRENT_USER\Программное обеспечение\Microsoft\Windows\CurrentVersion\Настройки Интернета

Но я не могу найти параметр, который устанавливает или отключает "Автоматическое определение настроек".

Любая помощь?

4b9b3361

Ответ 1

Я нашел решение: это 9-й байт этого ключа:

[HKEY_CURRENT_USER\Программное обеспечение\Microsoft\Windows\CurrentVersion\Настройки Интернета\Соединения] "DefaultConnectionSettings" = hex: 3c, 00,00,00,1f, 00,00,00, 05, 00,00,00,00,00, 00, 00,00,00,00,00,00,00,00,00,01,00,00,00,1f, 00,00,00,68,74,74,70,3a, 2f, 2f, 31, 34,34,2e, 31,33,31,2e, 32,32,32,2e, 31,36,37,2f, 77,70,61,64,2e, 64,61,74,90, 0e, 1e, 66, d3,88, c5,01,01,00,00,00,8d, a8,4e, 9e, 00,00,00,00,00,00,00,00

Это битовое поле:

  • 0x1: (всегда 1)
  • 0x2: прокси включен
  • 0x4: "Использовать скрипт автоматической настройки" отмечен
  • 0x8: "Автоматически определять настройки" отмечен

Маска 0x8, чтобы отключить его, т.е. Вычесть 8, если он выше, чем 8.

Благодаря Джейми в группах Google.

Обновить

На основе сценария VBScript от WhoIsRich в сочетании с подробностями в этом ответе приведен сценарий PowerShell для изменения этих и связанных параметров:

function Set-ProxySettings {
    [CmdletBinding()]
    param ( #could improve with parameter sets 
        [Parameter(Mandatory = $false)]
        [bool]$AutomaticDetect = $true
        ,
        [Parameter(Mandatory = $false)]
        [bool]$UseProxyForLAN = $false
        ,
        [Parameter(Mandatory = $false)]
        [AllowNull()][AllowEmptyString()]
        [string]$ProxyAddress = $null
        ,
        [Parameter(Mandatory = $false)]
        [int]$ProxyPort = 8080 #closest we have to a default port for proxies
        ,
        [AllowNull()][AllowEmptyString()]
        [bool]$UseAutomaticConfigurationScript = $false
    )
    begin {
        [string]$ProxyRegRoot = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings'
        [string]$DefaultConnectionSettingsPath = (Join-Path $ProxyRegRoot 'Connections')
        [byte]$MaskProxyEnabled = 2
        [byte]$MaskUseAutomaticConfigurationScript = 4
        [byte]$MaskAutomaticDetect = 8
        [int]$ProxyConnectionSettingIndex = 8
    }
    process {
    #this setting is affected by multiple options, so fetch once here 
    [byte[]]$DefaultConnectionSettings = Get-ItemProperty -Path $DefaultConnectionSettingsPath -Name 'DefaultConnectionSettings' | Select-Object -ExpandProperty 'DefaultConnectionSettings'

    #region auto detect
    if($AutomaticDetect) { 
        Set-ItemProperty -Path $ProxyRegRoot -Name AutoDetect -Value 1
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -bor $MaskAutomaticDetect
    } else {
        Set-ItemProperty -Path $ProxyRegRoot -Name AutoDetect -Value 0
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -band (-bnot $MaskAutomaticDetect)
    }
    #endregion

    #region defined proxy
    if($UseProxyForLAN) {
        if(-not ([string]::IsNullOrWhiteSpace($ProxyAddress))) {
            Set-ItemProperty -Path $ProxyRegRoot -Name ProxyServer -Value ("{0}:{1}" -f $ProxyAddress,$ProxyPort)
        }
        Set-ItemProperty -Path $ProxyRegRoot -Name ProxyEnable -Value 1
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -bor $MaskProxyEnabled
    } else {
        Set-ItemProperty -Path $ProxyRegRoot -Name ProxyEnable -Value 0        
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -band (-bnot $MaskProxyEnabled)
    }
    #endregion

    #region config script
    if($UseAutomaticConfigurationScript){
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -bor $MaskUseAutomaticConfigurationScript
    }else{
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -band (-bnot $MaskUseAutomaticConfigurationScript) 
    }
    #endregion

    #persist the updates made above
    Set-ItemProperty -Path $DefaultConnectionSettingsPath -Name 'DefaultConnectionSettings' -Value $DefaultConnectionSettings
    }
}

Ответ 2

Другим способом управления этим параметром является использование недокументированного ключа реестра AutoDetect = 0, упомянутого в этом сообщении в блоге:

Ключ реестра: HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\

DWORD AutoDetect= 0 или 1

Таким образом, файл .reg, чтобы отключить его, будет выглядеть так:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoDetect"=dword:00000000

Ответ 3

Для тех, кто хочет снять флажок "Автоматически определять параметры", не перезаписывая другие параметры, содержащиеся в записи реестра, вы можете использовать vbscript при входе в систему.

On Error Resume Next

Set oReg   = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
sKeyPath   = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections"
sValueName = "DefaultConnectionSettings"

' Get registry value where each byte is a different setting.
oReg.GetBinaryValue &H80000001, sKeyPath, sValueName, bValue

' Check byte to see if detect is currently on.
If (bValue(8) And 8) = 8 Then

  ' Turn off detect and write back settings value.
  bValue(8) = bValue(8) And Not 8
  oReg.SetBinaryValue &H80000001, sKeyPath, sValueName, bValue

End If

Set oReg = Nothing

Ответ 4

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

Я не хотел изменять WhoIsRich ответ, потому что это действительно здорово, но я адаптировал это для удовлетворения моих потребностей:

  • Если Автоматически определять настройки отмечен , а затем снимите флажок.
  • Если Автоматически определять параметры не отмечен, тогда отметьте.

    On Error Resume Next
    
    Set oReg   = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    sKeyPath   = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections"
    sValueName = "DefaultConnectionSettings"
    
    ' Get registry value where each byte is a different setting.
    oReg.GetBinaryValue &H80000001, sKeyPath, sValueName, bValue
    
    ' Check byte to see if detect is currently on.
    If (bValue(8) And 8) = 8 Then
        ' To change the value to Off.
        bValue(8) = bValue(8) And Not 8
    ' Check byte to see if detect is currently off.
    ElseIf (bValue(8) And 8) = 0 Then
        ' To change the value to On.
        bValue(8) = bValue(8) Or 8
    End If
    
    'Write back settings value
    oReg.SetBinaryValue &H80000001, sKeyPath, sValueName, bValue
    
    Set oReg = Nothing
    

Наконец, вам нужно сохранить его в файле .VBS (VBScript) и запустить его.

vbscript

Ответ 5

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

Ответ 6

Я использовал комбинированный ответ и сделал powershell script, который делает трюк для вас

$name = $PSScriptRoot + "\" + $MyInvocation.MyCommand.Name

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$name`"" -Verb RunAs; exit }

$registryPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

$Name = "AutoDetect"

$value = "0"

New-ItemProperty -Path $registryPath -Name $name -Value $value ` -PropertyType DWORD -Force | Out-Null

Read-Host -Prompt "press Enter to Continue"

script будет запускаться как admin и изменить значение на 0 (отключить автообнаружение).

Ответ 7

Вы всегда можете просто экспортировать реестр, изменить настройки, затем снова экспортировать реестр и выполнить diff.

Ответ 8

Я могу подтвердить это. Я экспортировал рег файл после внесения изменений, а затем поместил его в logon script следующим образом:

REM ------ IE Auto Detect Settings FIX ------------------
REG IMPORT \\mydomain.local\netlogon\IE-Autofix.reg 2>NUL

Ответ 9

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Internet Explorer\Control Panel]
"Connection Settings"=dword:00000000
"Connwiz Admin Lock"=dword:00000000
"Autoconfig"=dword:00000000
"Proxy"=dword:00000000
"ConnectionsTab"=dword:00000000

Ответ 10

Я думаю, вы можете изменить "Автоматически определять настройки" с помощью имени ключа реестра " AutoConfigURL". вот код, который я проверяю на С#. Желаю вам удачи.

    RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
                    if(registry.GetValue("AutoConfigURL") != null)
                    {
                        //Proxy Server disabled (Untick Proxy Server)
                        registry.DeleteValue("AutoConfigURL");
                    }

Ответ 11

Действительно, 9-й байт указывает на состояние проверки кнопки, но в приведенных выше ответах не учитывается флажок, который позволяет ручную настройку. Это значение состояния проверки также присутствует в этом девятом байте. Настоящий ответ должен быть таким:

Значение байта

00001001 = проверен ручной прокси-сервер

00000101 = Использовать автоматическую конфигурацию script отмечен

00000011 = Проверяется автоматически обнаружение настроек

Когда отмечены несколько флажков, значение 9-го байта является результатом операции побитового ИЛИ для значений, для которых установлен флажок.