Как программно очистить кеш MSIE / WinInet?

Я пытаюсь очистить кеш WinInet с помощью Win32 API - путем аннулирования записей кеша или их удаления (не имеет значения). Я не могу найти способ сделать это для всего кеша (кроме итерации по каждой записи - пример на C #, другой в VB) - это вообще возможно?


person Community    schedule 05.05.2009    source источник


Ответы (4)


Я почти уверен, что выполняю FindFirst / FindNextUrlCacheEntry (), тогда DeleteUrlCacheEntry () - единственный способ убедиться, что он работает во всех версиях IE.

В качестве альтернативы вы можете использовать FindFirst / FindNextUrlCacheGroup () и DeleteUrlCacheGroup () с "CACHEGROUP_FLAG_FLUSHURL_ONDELETE", но вы должны убедиться, что удалили только то, что хотите. Например, история, файлы cookie и временные интернет-файлы - все это группы кэша.

person Community    schedule 05.05.2009
comment
В этом случае я бы не прочь удалить все это. Надеялся, что есть более простой способ; Ну что ж. - person Piskvor left the building; 05.05.2009

По-видимому, можно (ab) использовать панель свойств обозревателя, чтобы очистить файлы кеша, выполнив следующее:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 

Попробую назвать это DLL.

Источник: http://www.vbforums.com/archive/index.php/t-440508.html, комментарий technorobbo

person Piskvor left the building    schedule 05.05.2009

Не используйте метод: RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8 Это не поддерживается Microsoft и, как было показано, нарушает работу кеша и вызывает всевозможные необычные проблемы.

person Community    schedule 11.07.2019
comment
Спасибо. Не думал, что это будет актуально в 2019 году, но вот мы :) - person Piskvor left the building; 11.07.2019

FTR: поясняется точное значение аргумента (8 выше означает только временные файлы Интернета, а не файлы cookie и т. Д.), Например. на http://www.howtogeek.com/howto/windows/clear-ie7-browsing-history-from-the-command-line.

BTW: К сожалению, RunDll32 асинхронный, что делает его не идеальным для запуска раньше, например. автоматизированные веб-тесты. Кто-нибудь знает, как запустить это как блокирующий вызов, или как программно найти точное имя каталога «Temporary Internet Files», чтобы его можно было опрашивать до тех пор, пока он не станет пустым? Закодируйте его на C (он нужен на Java, мог бы сделать JNI) - действительно единственный вариант, да? ; (

PS: Как можно опубликовать ответ на существующий ответ вместо того, чтобы начинать новый ответ в stackoverflow?

person Community    schedule 16.09.2010
comment
Спасибо, битовая маска действительно актуальна в звонке. (и, кстати, когда вы достигнете 50 репутации, вы сможете оставлять комментарии к вопросам и ответам других людей; до этого момента вы можете комментировать только свои собственные) - person Piskvor left the building; 16.09.2010