Какой ключ в реестре Windows отключает параметр подключения IE "Автоматическое определение настроек"?
Я пытаюсь установить все настройки соединения в IE.
Я нашел, как изменить большинство из них, в пути:
HKEY_CURRENT_USER\Программное обеспечение\Microsoft\Windows\CurrentVersion\Настройки Интернета
Но я не могу найти параметр, который устанавливает или отключает "Автоматическое определение настроек".
Любая помощь?
Ответы
Ответ 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-го байта является результатом операции побитового ИЛИ для значений, для которых установлен флажок.