如何以编程方式清除 MSIE/WinInet 缓存?

Posted

技术标签:

【中文标题】如何以编程方式清除 MSIE/WinInet 缓存?【英文标题】:How to clear MSIE/WinInet cache programmatically? 【发布时间】:2009-05-05 14:33:55 【问题描述】:

我正在尝试使用 Win32 API 清除 WinInet 缓存 - 通过使缓存条目无效或删除它们(没关系)。我找不到对整个缓存执行此操作的任何方法(除了遍历每个条目 - example in C#,another in VB) - 这甚至可能吗?

【问题讨论】:

【参考方案1】:

显然,可以(ab)使用 Internet 选项面板通过执行以下操作来清除缓存文件:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 

将尝试将其作为 DLL 调用。

来源:http://www.vbforums.com/archive/index.php/t-440508.html,technorobbo 评论

【讨论】:

【参考方案2】:

我相当肯定执行 FindFirst/FindNextUrlCacheEntry() 然后 DeleteUrlCacheEntry() 是确保它适用于所有 IE 版本的唯一方法。

或者,您可以将 FindFirst/FindNextUrlCacheGroup() 和 DeleteUrlCacheGroup() 与“CACHEGROUP_FLAG_FLUSHURL_ONDELETE”一起使用,但您必须确保只删除您想要的内容。例如,历史记录、cookie 和临时 Internet 文件都是缓存组。

【讨论】:

在这种情况下,我不介意删除所有这些。希望有更简单的方法;哦,好吧。【参考方案3】:

不要使用方法:RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 这不受 Microsoft 支持,并且已被证明会破坏缓存并导致各种异常问题。

【讨论】:

谢谢。我认为这在 2019 年仍然无关紧要,但我们到了 :)【参考方案4】:

FTR:解释了参数的确切含义(上面的 8,仅表示 Internet 临时文件而不是 Cookie 等),例如在http://www.howtogeek.com/howto/windows/clear-ie7-browsing-history-from-the-command-line。

顺便说一句:不幸的是 RunDll32 是异步的,这使得它不适合在例如之前运行。自动化的网络测试。是否有人知道如何将其作为阻塞调用运行,或者如何以编程方式找到“临时 Internet 文件”目录的确切目录名称,以便可以对其进行轮询直到为空?用 C 编码(需要用 Java,可以做 JNI)真的是唯一的选择,对吧? ;(

PS:如何发布对现有答案的回复而不是在 *** 上开始新的答案?

【讨论】:

谢谢,位掩码确实与通话相关。 (顺便说一句,当您的声望达到 50 时,您将能够在其他人的问题和答案中留下 cmets;在此之前,您只能发表自己的评论)

以上是关于如何以编程方式清除 MSIE/WinInet 缓存?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式清除浏览器缓存?

以编程方式清除 WinInet DNS 缓存

Sitecore - 以编程方式清除用户的缓存

有没有办法以编程方式清除所有缓存文件?

在 Linux 中以编程方式清除挂载 (SSD) 磁盘上的缓存

如何以编程方式计算已安装应用程序的所有缓存大小?