0

我尝试使用 c# 程序更改代理服务器地址。

    [DllImport("wininet.dll")]
    public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);
    public const int INTERNET_OPTION_SETTINGS_CHANGED = 39;
    public const int INTERNET_OPTION_REFRESH = 37;
    bool settingsReturn, refreshReturn;

    void SetProxy()
    {
        RegistryKey RegKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
        RegKey.SetValue("ProxyServer", "192.168.1.1:8082");
        RegKey.SetValue("ProxyEnable", 1);

        settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
        refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
    }

首先是我ProxyServer在注册表中找不到密钥,当我创建它时,它仍然不能解决问题。当我尝试在我的电脑中手动输入时,我发现 Internet Explorer 仍然没有使用代理服务器。它在whatismyip.com中显示了我自己的 ip

即使我尝试重新安装操作系统,我也不明白为什么会发生这种情况。问题仍然存在那么有什么解决方案吗?

4

3 回答 3

1

这样做,您的欢迎。也无需关闭 IE,因为它会刷新会话:

public const int INTERNET_OPTION_REFRESH = 37;
    private const int INTERNET_OPTION_END_BROWSER_SESSION = 42;
    public const int INTERNET_OPTION_SETTINGS_CHANGED = 39;

    [DllImport("wininet.dll", SetLastError = true)]
    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);


    public void RefreshBrowserSettings()
    {
        InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
        InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
    }

public void SetProxy(String Proxy, String Port, bool enabled = true)
    {
        string proxy = Proxy + ":" + Port;
        string key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
        RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true);

        if (Proxy != "")
        {
            RegKey.SetValue("ProxyServer", proxy);
        }

        if (enabled && Proxy != "")
        {
            RegKey.SetValue("ProxyEnable", 1);
        }
        else
        {
            RegKey.SetValue("ProxyEnable", 0);
        }

        RefreshBrowserSettings();

    }
于 2013-10-08T21:18:54.373 回答
0

您使用的是什么操作系统?32 位还是 64 位?

也许您有一个 64 位的 Windows,但是您正在运行一个 32 位的程序来更改注册表?在这种情况下,您可能会因为 Windows 具有部分独立的 32 位和 64 位注册表而遇到问题。

于 2012-07-09T00:12:32.613 回答
0

来自msdn...

Regedit4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"MigrateProxy"=dword:00000001
"ProxyEnable"=dword:00000001
"ProxyHttp1.1"=dword:00000000
"ProxyServer"="http://ProxyServername:80"
"ProxyOverride"=""

但是您正在设置代理服务器值,例如;RegKey.SetValue("代理服务器", "192.168.1.1:8082");

没有“http://”...你试过了吗?

另外,确保 Internet Explorer exe 已经关闭(检查任务栏运行应用列表)

最后一件事;您是否从其他浏览器设置了代理选项?它工作正常吗?

于 2012-07-08T23:53:01.953 回答