gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:14:57 29 4
gpt4 key购买 nike

我在这里遇到一个非常奇怪的情况:我编写了一个应用程序,除其他外,将连接的代理从打开切换到关闭,反之亦然。通过更改注册表中的值来完成此操作:

public void SetUpProxy(string proxy, bool enable)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
if (proxy != null)
key.SetValue("ProxyServer", proxy);
key.SetValue("ProxyEnable", enable ? 1 : 0);
key.Close();
}

当我请求在我的应用程序中启用代理时,它要做的第一件事是连接到ftp服务器,下载文件,然后启用代理(在启用代理的情况下无法进行下载)。一切正常,直到我启动Internet Explorer。
例如:如果我启动我的应用程序,则让它启用代理,然后让它禁用代理-一切正常。但是,如果我启用了代理, 然后启动IE ,禁用代理并尝试再次启用它,将无法正常工作-该应用程序无法连接到ftp服务器,因为它以某种方式使用了代理,即使注册表中的值为0!
我希望我能正确解释。我的问题是:为什么会发生这种情况,我该如何解决?

编辑:我正在使用WebClient类下载文件。我发现当应用运行良好时,client.Proxy.GetProxy(myUri)返回指定的Uri,但是当我打开IE时,它会更改为“ http://theUriFromIE”。

最佳答案

在我自己的测试中,我得出的结论是,每次重新加载Internet Explorer时,至少在Windows XP上会重新加载网络连接设置。
因此,要加载对代理设置的更改,必须关闭IE的所有实例,然后重新打开至少一个实例,以加载设置。
不知道新方法在Windows Vista上是否是即时的。
另外,看看this other question:

这在某种程度上取决于您的确切需求。如果您正在编写C#应用程序,并且只想设置应用程序将使用的默认代理设置,请使用System.Net.GlobalProxySelection类。您还可以使用System.Net.WebProxy为任何特定的连接设置代理。
如果您实际上想更新注册表中的代理设置,我相信您将需要使用P / Invoke来调用WinAPI函数WinHttpSetDefaultProxyConfiguration

您也有这个Microsoft How to programmatically query and set proxy settings under Internet Explorer

关于.net - 启用/禁用代理应用程序不适用于IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1393713/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com