0

Windows サービスで実行され、ユーザーごとにいくつかのプロキシ設定を設定するコードがあります。具体的には、次のように設定します。

HKU[ユーザー SID]\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL

HKU[ユーザー SID]\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\EnableAutoProxyResultCache

HKU[ユーザー SID]\Software\Policies\Microsoft\Internet Explorer\Control Panel\Connection Settings

「ロックダウンされた」ユーザーの場合、次のように設定します。

AutoConfigURL=http://127.0.0.1:8888/wpad.dat

EnableAutoProxyResultCache=0

接続設定=1

「ロックされていない」ユーザーの場合、次を設定します。

AutoConfigURL (このキーを削除)

接続設定 (このキーを削除)


すべてが Windows XP、IE、FireFox、および Chrome でうまく機能します。これらのブラウザーのいずれかを再起動するとすぐに、新しい設定が使用されます (プロキシを使用するかどうかに関係なく)。

Windows 7 では、FireFox と IE ではすべてがうまく機能しますが、Chrome では機能しません。次のいずれかが発生するまで、Chrome は新しい設定の使用を開始しません。

  1. inetcpl.cpl を実行して [OK] ボタンをクリックします (何も変更する必要はありませんが、[キャンセル] だけでなく [OK] をクリックする必要があります)。

  2. ログオフして Windows ユーザー アカウントに戻る

  3. 私はIEを実行しています(IEを実行して閉じるだけです)

キャッシュが何であれ、このキャッシュをプログラムでリセットする方法を探しています。

私が試したがうまくいかなかったもの:

  1. 私が考えることができるほぼすべての「netsh」コマンドオプション。

  2. プロキシ設定が変更され、フラグが更新された InternetSetOption() (MSDN を参照) (hInternet ハンドルとして NULL を使用)

  3. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\ の下の値を削除しました


このキャッシュの問題を見て、それをクリアする方法を見つけた人はいますか? そうでない場合、一般的にどのような情報を探す必要がありますか。これは WinHTTP キャッシュ、TCP、IP、WinInet ですか? Google Chrome にしか表示されていませんが、実際の Chrome キャッシュではなく、OS レベルのものだと思います。

レジストリを直接更新するのではなく、おそらく InternetSetOption を使用する必要があることはわかっていますが、それはサービスからは機能しません。また、デスクトップ アプリ レベルのコードで問題を引き起こしているウイルス対策プログラムをいくつか見つけました (しかし、それらは機能しません)。私のサービスが物事を更新するかどうかは気にしません)。上記の設定の一部は、すべて HKCU の下にあるにもかかわらず、変更するために管理者/昇格が必要であることは言うまでもありません。

4

1 に答える 1

0

レジストリ値を設定した後にこれを呼び出すと、テストエラーまたは異常のように見えますが、機能しているように見えます。

   InternetSetOption(NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,0);
   InternetSetOption(NULL,INTERNET_OPTION_REFRESH,NULL,0);
于 2012-04-13T02:41:24.080 に答える