1

这是我用来启用代理的代码。在 Server 2008 R2(Windows 7 内核)之前,它在所有版本的 Windows 上都可以正常工作。现在它只在第一次起作用。我启动我的应用程序并启用代理,并且工作正常。然后我尝试使用类似于以下代码的代码禁用它。它永远不会被禁用。如果我通过进入 Internet 选项手动禁用它,然后尝试通过我的应用程序再次启用它,它不会被启用。

据我所知,我的代码中的第一个 InternetSetOption 命令正在恢复我使用 regKey.SetValue() 函数所做的更改。至少当我逐步完成它时,这似乎是正在发生的事情。有没有人以前见过这个问题,或者知道如何解决它。我一直在努力寻找解决方法一段时间,但没有任何结果。任何输入将不胜感激。

regKey.SetValue("ProxyServer", "localhost:" + Settings.Default.Port, RegistryValueKind.String);
regKey.SetValue("ProxyEnable", 1, RegistryValueKind.DWord);
                        regKey.Flush();
InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0); //INTERNET_OPTION_SETTINGS_CHANGED
InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0); //INTERNET_OPTION_REFRESH
4

2 回答 2

1

通过写入注册表来启用和禁用代理并不是一个好习惯。看到这个问题:

启用/禁用代理应用程序不适用于 IE

于 2009-10-02T21:57:02.003 回答
0

虽然绝对不是一个干净的解决方案,但这种变通办法确实适用于 Server 2008 R2 和 Windows 7。

设置与代理相关的注册表项后,只需启动 Internet Explorer 即可刷新 SystemWebProxy:

Process objProcess = Process.Start("IEXPLORE.EXE", "-nomerge " + @"http://www.google.com/");
Thread.Sleep(TimeSpan.FromSeconds(2));
objProcess.Kill();
于 2013-12-20T00:44:37.350 回答