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\CurrentVersion\Internet Settings
But I can't find the parameter that sets or unsets "Automatically Detect Settings".
Any help ?
IE stores its configuration settings in the HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings registry subkey. In this subkey, the ProxyEnable entry controls enabling and disabling IE's proxy settings. Setting ProxyEnable to 0 disables them; setting ProxyEnable to 1 enables them.
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:
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 } }
Another way to control this setting is by using an undocumented registry key AutoDetect=0 mentioned on this blog post:
Registry Key :
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\
DWORD
AutoDetect
= 0 or 1
So the .reg file to turn it off would look like:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "AutoDetect"=dword:00000000
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With