Windows 7 Disable Proxy via cmd - and put in effect

1

0

Windows 7 (64-bit) Disable Proxy via cmd - and put in effect?

I have found the correct registry key to change, and have code to change it.

reg add    "HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0

Found via

gpresults /h "%userprofile%\desktop\RSPO.html"

Running the 'reg add' does change the reg key, same key that changes, when I open IE (as admin) and turn off the LAN proxy settings manually.

However, when I do it manually, the desired effect happens - I no longer have proxy issues. But via my cmd script, the key changes but I still have proxy issues. When I open the LAN proxy settings in IE, it's still Enabled.

How do I change the reg key and put it into effect?

Tried changing a bunch of registry keys...

Current script...

reg add "HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0

reg add "HKCU\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t REG_DWORD /d 0

mrdnk

Posted 2014-02-03T21:05:22.920

Reputation: 111

2

Possible duplicate of In Windows 7, how to change proxy settings from command line?

– Butzke – 2015-10-16T14:30:02.640

Tried running the script with administrative priviliges or some elevation command in front of it? Access rights to that registry key might prohibit changing it without administrative rights. You can check access rights by navigating to the key in regedit and rightklicking the entry, same way it works for files in windows explorer. – Johannes H. – 2014-02-03T21:10:08.303

I'm running cmd as admin. After running the script I get "The operation completed successfully". And the registry key has changed. – mrdnk – 2014-02-03T21:12:16.273

Can you edit your question to include the actual registry location you're changing? – Ƭᴇcʜιᴇ007 – 2014-02-03T21:27:43.600

There you go, sorry - had Stack Exchange logged in on different machine. – mrdnk – 2014-02-03T21:39:28.630

Not sure if you've noticed, but you have REG_DWARD instead of REG_DWORD Could that be it? – JSanchez – 2014-02-03T21:40:42.887

Just a typo on Superuser, have actually pasted in the whole cmd now. – mrdnk – 2014-02-03T21:44:18.680

@mrdnk: Try to escape the backslashes in your script using the caret ^ symbol. Or use double backslashes. See if that solves your issue. – JSanchez – 2014-02-03T22:37:56.797

For reg, it is double backslashes: http://ss64.com/nt/syntax-esc.html

– JSanchez – 2014-02-03T22:45:41.783

it's in quotes, and it is changing the value. – mrdnk – 2014-02-03T22:49:29.203

@mrdnk: You are running a 64-bit OS. Just realized that. http://ovidiupl.wordpress.com/2008/07/11/useful-wow64-file-system-trick/

– JSanchez – 2014-02-03T23:20:22.693

Interesting read. Still no joy, but it gives me something to look into a bit deeper. – mrdnk – 2014-02-03T23:37:55.483

let us continue this discussion in chat

– JSanchez – 2014-02-03T23:41:31.627

Answers

2

Unfortunately, there is no easy way. As you’ve noticed, you’re missing the magic “read those settings now” command:

InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, NULL)
InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, NULL)

Of course, you can’t just call a C function from cmd. There is, however, a (relatively) viable way to do it with PowerShell:

function Reload-InternetOptions
{
  $signature = @'
[DllImport("wininet.dll", SetLastError = true, CharSet=CharSet.Auto)]
public static extern bool InternetSetOption(IntPtr hInternet, int
dwOption, IntPtr lpBuffer, int dwBufferLength);
'@
  $interopHelper = Add-Type -MemberDefinition $signature -Name MyInteropHelper -PassThru

  $INTERNET_OPTION_SETTINGS_CHANGED = 39
  $INTERNET_OPTION_REFRESH = 37

  $result1 = $interopHelper::InternetSetOption(0, $INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)
  $result2 = $interopHelper::InternetSetOption(0, $INTERNET_OPTION_REFRESH, 0, 0)

  $result1 -and $result2
}

Simply invoke it like this: Reload-InternetOptions. It will return True when successful.

Please note that this method dynamically creates some stuff each time you run it. It cannot be unloaded by PowerShell and will keep accumulating until you quit the PowerShell process that ran the method.

Daniel B

Posted 2014-02-03T21:05:22.920

Reputation: 40 502

Out of curiosity, how do you know that this event is needed to make the changes take effect? – C4p741nZ – 2020-02-06T09:37:22.823

@C4p741nZ Do you mean how to find out stuff like this? In the old days, you’d have to check the documentation. Nowadays you can just use Google. The trick is of course to find the right search terms. – Daniel B – 2020-02-06T10:14:12.273

0

I had the same issue when enabling/disabling a proxy using a vbs script.

I just added this:

Shell.run "ms-settings:network-proxy"

WScript.Sleep 1000

Shell.Run "taskkill /f /im SystemSettings.exe", , True

it opens the proxy settings, waits 1 second and then closes it. This will ensure that your proxy changes are working.

bewstaf

Posted 2014-02-03T21:05:22.920

Reputation: 1

0

I have created simple CLI tool which force reload IE proxy settings. It calls WININET.DLL InternetSetOption function.

Download it from here: https://gofile.io/?c=ol4zE7

Tested on W7 and W10.

svmPavouk

Posted 2014-02-03T21:05:22.920

Reputation: 1

0

The IE settings are per-user, so I think you're just targeting the wrong Registry key.

For example, to turn our proxy check-box off domain-wide, we use a login script to disable it here:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable

Ƭᴇcʜιᴇ007

Posted 2014-02-03T21:05:22.920

Reputation: 103 763

That's what I initally went for by I found this in the gpresults ...

Policy Setting Winning GPO Make proxy settings per-machine (rather than per-user) Enabled TMG Proxy Settings Policy – mrdnk – 2014-02-03T21:56:26.587

And...

Registry item (Key path: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings, Value name: ProxyEnable) – mrdnk – 2014-02-03T21:58:28.127

Ok, and as you say, it doesn't work. ;) Does it work as you want if you use the HKCU key instead? – Ƭᴇcʜιᴇ007 – 2014-02-03T22:05:56.513

Tried changing a bunch of keys, see edit. – mrdnk – 2014-02-03T22:11:08.957