36

Internet Explorer のプロキシ設定を設定してから、新しいブラウザー ウィンドウを開く必要がある winforms アプリを作成しています。現在、レジストリに移動してプロキシ設定を適用しています。

RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8080");

これを行う最善の方法はレジストリにアクセスすることですか、それともより推奨される方法はありますか? 別の解決策がある場合は、レジストリの変更を避けたいと思います。

4

6 に答える 6

21

から: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/19517edf-8348-438a-a3da-5fbe7a46b61a

コードの先頭に次の行を追加します。

System.Runtime.InteropServices を使用します。Microsoft.Win32 を使用。

    [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;

そしてコードを暗示します:

        RegKey.SetValue("ProxyServer", YOURPROXY);
        RegKey.SetValue("ProxyEnable", 1);

        // These lines implement the Interface in the beginning of program 
        // They cause the OS to refresh the settings, causing IP to realy update
        settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
        refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
于 2010-12-20T20:20:52.607 に答える
21

これは、正確なニーズに多少依存します。C# アプリを作成していて、アプリが使用する既定のプロキシ設定を設定するだけの場合は、クラス System.Net.GlobalProxySelection ( http://msdn.microsoft.com/en-us/library/system.net .globalproxyselection.aspx )。System.Net.WebProxy ( http://msdn.microsoft.com/en-us/library/system.net.webproxy.aspx )を使用して、特定の接続のプロキシを設定することもできます。

実際にレジストリのプロキシ設定を更新したい場合は、P/Invoke を使用して WinAPI 関数 WinHttpSetDefaultProxyConfiguration ( http://msdn.microsoft.com/en-us/library/aa384113. aspx )。

于 2008-10-16T15:34:34.427 に答える
6

あなたがしようとしていることに特にタグ付けされたこの KB 記事をチェックしてください。

http://support.microsoft.com/kb/226473

短いバージョンでは、InternetOpen、InternetSetOption API を使用してプロキシ設定を更新します。

于 2008-10-13T15:27:06.940 に答える
3

FW 2.0以降に存在するこの便利な方法を使用できます: (私は発見したばかりで、私は今別の男です...)

http://msdn.microsoft.com/en-us/library/system.net.webrequest.getsystemwebproxy.aspx

于 2012-10-22T09:17:46.490 に答える
-2

クイック コード例 (msdn から):

WebProxy proxyObject = new WebProxy("http://proxyserver:80/",true);
WebRequest req = WebRequest.Create("http://www.contoso.com");
req.Proxy = proxyObject;
于 2012-01-04T08:50:06.410 に答える