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 并单击确定按钮(不需要更改任何内容,但需要单击确定,而不仅仅是取消)

  2. 我注销并重新登录 Windows 用户帐户

  3. 我运行 IE(只是运行 IE 并关闭它)

我正在寻找一种编程方式来重置此缓存,无论它是什么缓存。

我尝试过但没有奏效的方法:

  1. 我能想到的几乎所有“netsh”命令选项。

  2. InternetSetOption()(请参阅 MSDN),代理设置已更改并刷新标志(使用 NULL 作为 hInternet 句柄)

  3. 删除了 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\ 下的值


有没有人看到这个缓存问题并找到了清除它的方法?如果没有,我一般应该寻找什么信息。这是 WinHTTP 缓存、TCP、IP、WinInet 吗?尽管它只出现在 Google Chrome 中,但我不认为它是真正的 Chrome 缓存,我认为它是在操作系统级别。

我知道我可能应该使用 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 回答