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

4
我试图使用Win32 API清除WinInet缓存 - 通过使缓存条目无效或删除它们(无关紧要)。我找不到任何方法来清除整个缓存(除了迭代每个条目 - C#示例VB示例) - 这真的可能吗?
4个回答

4

2

不要使用这种方法:RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 微软不支持这种方法,已经证明会破坏缓存并引起各种异常问题。

建议使用其他方法来清除浏览器缓存。

最初的回答:


谢谢。我没想到这在2019年仍然有用,但是我们在这里 :) - Piskvor left the building

2
我非常确定,使用FindFirst/FindNextUrlCacheEntry()然后DeleteUrlCacheEntry()是确保在所有版本的IE上都能正常工作的唯一方法。
另外,您可以使用FindFirst/FindNextUrlCacheGroup()和DeleteUrlCacheGroup()配合"CACHEGROUP_FLAG_FLUSHURL_ONDELETE",但您必须确保只删除您想要删除的内容。例如,历史记录、Cookie和临时Internet文件都属于缓存组。

在这种情况下,我不介意删除所有这些。希望有更简单的方法;哦,好吧。 - Piskvor left the building

0

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

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

PS:如何回复现有答案而不是在stackoverflow上开始新答案?


谢谢,位掩码在调用中确实很重要。(顺便说一下,当您达到声望50时,您将能够在其他人的问题和答案上留下评论;在此之前,您只能评论自己的问题) - Piskvor left the building

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接