What key in windows registry disables IE connection parameter “Automatically Detect Settings”?

后端 未结 11 1784
没有蜡笔的小新
没有蜡笔的小新 2020-12-04 18:15

I\'m trying to set all the connection settings in IE.

I\'ve found how to modify most of them, in the path :

HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\

11条回答
  •  被撕碎了的回忆
    2020-12-04 18:58

    I found the solution : it's the 9th byte of this key :

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections] "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

    It's a bitfield:

    • 0x1: (Always 1)
    • 0x2: Proxy enabled
    • 0x4: "Use automatic configuration script" checked
    • 0x8: "Automatically detect settings" checked

    Mask 0x8 to turn it off, i.e., subtract 8 if it's higher than 8.

    Thanks to Jamie on google groups.

    Update

    Based on the VBScript by WhoIsRich combined with details in this answer, here's a PowerShell script to amend these & related settings:

    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
        }
    }
    

提交回复
热议问题