znalazłem rozwiązanie: to 9. bajt tego klucza:
[HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Connections] "DefaultConnectionSettings" = hex: 3c, 00,00, 00,1f, 00,00,00, , 00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,01,00,00, 00,1f, 00,00,0068,74,74,70,3a, 2f, 2f, 31, 344,3, 24e, 31,33,31,2e, 322,32,32,0e, 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
Jest to bitfield:
- 0x1: (Zawsze 1)
- 0x2: Proxy włączony
- 0x4: "Użyj skryptu automatycznej konfiguracji" sprawdzone
- 0x8: "Automatycznie wykryj ustawienia" sprawdzone
Mask 0x8, aby włączyć wyłączyć, tj. odjąć 8, jeśli jest wyższa niż 8.
Podziękowania dla Jamie na google groups.
Aktualizacja
oparciu o VBScript przez WhoIsRich połączeniu ze szczegółami w tej odpowiedzi, oto skrypt PowerShell do zmiany tych & związanych ustawienia:
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] -bor $MaskUseAutomaticConfigurationScript
}
#endregion
#persist the updates made above
Set-ItemProperty -Path $DefaultConnectionSettingsPath -Name 'DefaultConnectionSettings' -Value $DefaultConnectionSettings
}
}
Naprawdę przydatne. rozwiązał mój problem. – Sean
rozwiązałem także moje! –
To byłby dziewiąty ** bajt **, a nie bit. –