1

これは、プロキシを有効にするために使用するコードです。Server 2008 R2 (Windows 7 Kernal) までのすべてのバージョンの Windows で正常に動作しました。今では最初の時間だけ動作します。アプリケーションを起動してプロキシを有効にすると、問題なく動作します。次に、以下のコードのようなコードを使用して無効にします。無効になることはありません。インターネット オプションに移動して手動で無効にし、アプリケーションから再度有効にしようとしても、有効になりません。

私の知る限り、私のコードの最初の 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 に答える