IE缓存清除
原文转载自:http://blog.csdn.net/whatday/article/details/7566925
首先: 在 stdafx.h中要加入: #include "atlbase.h"
设置->Link 要引入库 : Wininet.lib shlwapi.lib
//在对话框的头文件中加入:
#include "wininet.h"#include "UrlHist.h"#define SWEEP_BUFFER_SIZE 10000public:enum DEL_CACHE_TYPE //要删除的类型。{File,//表示internet临时文件Cookie //表示Cookie};
//以下为一些辅助函数 ( 辅助函数的具体实现参见源代码中.限于篇幅不再给出 )
BOOL DeleteUrlCache(DEL_CACHE_TYPE type);BOOL EmptyDirectory(LPCTSTR szPath, BOOL bDeleteDesktopIni = FALSE, BOOL bWipeIndexDat = FALSE);//清空一个目录BOOL IsWindowsNT();//判断系统BOOL IsWindows2k();BOOL GetUserSid(PSID* ppSid);void GetSidString(PSID pSid, LPTSTR szBuffer);BOOL GetOldSD(HKEY hKey, LPCTSTR pszSubKey, BYTE** pSD);BOOL CreateNewSD(PSID pSid, SECURITY_DESCRIPTOR* pSD, PACL* ppDacl);BOOL RegSetPrivilege(HKEY hKey, LPCTSTR pszSubKey, SECURITY_DESCRIPTOR* pSD, BOOL bRecursive);BOOL WipeFile(LPCTSTR szDir, LPCTSTR szFile);
//现在我们可以分别实现每项清除功能。
1、清除IE临时文件
TCHAR szPath[MAX_PATH];
DeleteUrlCache(File);
if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_INTERNET_CACHE, FALSE))
{ //得到临时目录,并清空它.
EmptyDirectory(szPath);
}
清除IE临时文件的另外一个途径是直接调用Wininet函数,请看下面用于清除IE临时文件的函数
BOOL DelTempFiles() { BOOL bResult = FALSE; BOOL bDone = FALSE; LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL; DWORD dwTrySize, dwEntrySize = 4096; // start buffer size HANDLE hCacheDir = NULL; DWORD dwError = ERROR_INSUFFICIENT_BUFFER; do { switch (dwError) { // need a bigger buffer case ERROR_INSUFFICIENT_BUFFER: delete [] lpCacheEntry; lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize]; lpCacheEntry->dwStructSize = dwEntrySize; dwTrySize = dwEntrySize; BOOL bSuccess; if (hCacheDir == NULL) bSuccess = (hCacheDir = FindFirstUrlCacheEntry(NULL, lpCacheEntry, &dwTrySize)) != NULL; else bSuccess = FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize); if (bSuccess) dwError = ERROR_SUCCESS; else { dwError = GetLastError(); dwEntrySize = dwTrySize; // use new size returned } break; // we are done case ERROR_NO_MORE_ITEMS: bDone = TRUE; bResult = TRUE; break; // we have got an entry case ERROR_SUCCESS: // don''''''''''''''''t delete cookie entry if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY)) DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName); // get ready for next entry dwTrySize = dwEntrySize; if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize)) dwError = ERROR_SUCCESS; else { dwError = GetLastError(); dwEntrySize = dwTrySize; // use new size returned } break; // unknown error default: bDone = TRUE; break; } if (bDone) { delete [] lpCacheEntry; if (hCacheDir) FindCloseUrlCache(hCacheDir); } } while (!bDone); return bResult;}
2、Cookie的清除
TCHAR szPath[MAX_PATH];DeleteUrlCache(Cookie);if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_COOKIES, FALSE)){//得到目录,并清空 EmptyDirectory(szPath);}
3、浏览器地址栏历史地址的清除
SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\TypedURLs"));
4、清除表单自动完成历史记录
CString sKey;DWORD dwRet;if (IsWindows2k() || IsWindowsNT())//先判断系统{CString sBaseKey;SECURITY_DESCRIPTOR NewSD;BYTE* pOldSD;PACL pDacl = NULL;PSID pSid = NULL;TCHAR szSid[256];if (GetUserSid(&pSid)){//get the hiden key nameGetSidString(pSid, szSid);sKey = _T("Software\\Microsoft\\Protected Storage System Provider\\");sKey += szSid;//get old SDsBaseKey = sKey;GetOldSD(HKEY_CURRENT_USER, sBaseKey, &pOldSD);//set new SD and then clearif (CreateNewSD(pSid, &NewSD, &pDacl)){RegSetPrivilege(HKEY_CURRENT_USER, sKey, &NewSD, FALSE);sKey += _T("\\Data");RegSetPrivilege(HKEY_CURRENT_USER, sKey, &NewSD, FALSE);sKey += _T("\\e161255a-37c3-11d2-bcaa-00c04fd929db");RegSetPrivilege(HKEY_CURRENT_USER, sKey, &NewSD, TRUE);dwRet = SHDeleteKey(HKEY_CURRENT_USER, sKey);}if (pDacl != NULL)HeapFree(GetProcessHeap(), 0, pDacl);//restore old SDif (pOldSD){RegSetPrivilege(HKEY_CURRENT_USER, sBaseKey, (SECURITY_DESCRIPTOR*)pOldSD, FALSE);delete pOldSD;}}if (pSid)HeapFree(GetProcessHeap(), 0, pSid);}//win9xDWORD dwSize = MAX_PATH;TCHAR szUserName[MAX_PATH];GetUserName(szUserName, &dwSize);sKey = _T("Software\\Microsoft\\Protected Storage System Provider\\");sKey += szUserName;sKey += _T("\\Data\\e161255a-37c3-11d2-bcaa-00c04fd929db");dwRet = SHDeleteKey(HKEY_LOCAL_MACHINE, sKey);
5、清除自动密码历史记录
SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\IntelliForms"));
6、清收藏夹中的内容
TCHAR szPath[MAX_PATH];
if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_FAVORITES, FALSE))
{ //得到目录,并清空
EmptyDirectory(szPath);
}
7、清RAS自动拨号历史记录
SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\RAS Autodial\\Addresses"));
8、清系统临时文件夹
TCHAR szPath[MAX_PATH];if (GetTempPath(MAX_PATH, szPath))//得到系统临时目录{ EmptyDirectory(szPath, TRUE);}
9、清空回收站
SHEmptyRecycleBin(NULL, NULL,
SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND);
10、清除"运行"中的自动匹配历史记录
SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU"));
11、清"文档"中的历史记录
TCHAR szPath[MAX_PATH];if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_RECENT, FALSE)){ EmptyDirectory(szPath);} SHDeleteKey(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RecentDocs"));
12、清除上次登陆用户记录
SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), _T("DefaultUserName"));SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), _T("AltDefaultUserName"));SHDeleteValue(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Winlogon"), _T("DefaultUserName"));
13、清除"查找文件"自动匹配历史记录
SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Doc Find Spec MRU"));SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\Explorer Bars\\{C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1}\\ContainingTextMRU"));SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\Explorer Bars\\{C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1}\\FilesNamedMRU"));
14、清除"查找计算机"自动匹配历史记录
SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FindComputerMRU"));SHDeleteKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\Explorer Bars\\{C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1}\\ComputerNameMRU"));
15、清除网络联接历史记录
TCHAR szPath[MAX_PATH];if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_NETHOOD, FALSE)){ //得到目录,并清空 EmptyDirectory(szPath);}
16、清远程登录历史记录
CString sKey;for (int i=1; i<=8; i++){ sKey.Format(_T("Machine%d"), i); SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Telnet"), sKey); sKey.Format(_T("Service%d"), i); SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Telnet"), sKey); sKey.Format(_T("TermType%d"), i); SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Telnet"), sKey);}SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Telnet"), _T("LastMachine"));SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Telnet"), _T("LastService"));SHDeleteValue(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Telnet"), _T("LastTermType"));
17、清浏览网址历史记录
下面这个函数可以用于清除网址历史记录
#include "SHLGUID.H"HRESULT ClearHistory() {HRESULT hr;CoInitialize(NULL);{ IUrlHistoryStg2* pUrlHistoryStg2 = NULL; hr= CoCreateInstance(CLSID_CUrlHistory,NULL,1, IID_IUrlHistoryStg2,(void**)&pUrlHistoryStg2); if (SUCCEEDED(hr)) { hr = pUrlHistoryStg2->ClearHistory(); pUrlHistoryStg2->Release(); }}CoUninitialize(); return hr;}
// 如果上面代码不能清
// 则有下面的,不完美,但能工作.
TCHAR szPath[MAX_PATH];GetWindowsDirectory(szPath, MAX_PATH);_tcscat(szPath, _T("\\History"));EmptyDirectory(szPath, FALSE, TRUE); if (SHGetSpecialFolderPath(NULL, szPath, CSIDL_HISTORY, FALSE)){ EmptyDirectory(szPath, FALSE, TRUE);}
IE缓存清除的更多相关文章
- ms sql server缓存清除与内存释放
Sql Server系统内 存管理在没有配置内存最大值,很多时候我们会发现运行Sql Server的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系 ...
- WebView Cache 缓存清除
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webv ...
- SQL Server 缓存清除与内存释放
Sql Server系统内存管理在没有配置内存最大值,很多时候我们会发现运行SqlServer的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰 ...
- Nginx 反向代理并缓存及缓存清除
Nginx 反向代理并缓存及缓存清除 原文地址:http://www.cnblogs.com/caoguo/p/5012447.html 一. Nginx 配置 #user nobody; worke ...
- Ehcache缓存框架与 Shiro 框架 出现出现验证错误 && Tomcat 缓存清除的问题
当一个项目使用久了以后就会出现各种问题,下面是我遇到的一个权限验证错误的问题 我的项目是 Ehcache 结合 Shiro 一起使用的,项目用用久了出现 Token验证错误,Cookie之类 ...
- hibernate缓存清除(转)
文章有点杂,这不是原文,谢谢贡献者 http://www.360doc.com/content/16/0413/16/32415095_550307388.shtml 一.hibernate一级缓存( ...
- spark性能优化----缓存清除
spark是一款优秀的框架,计算性能相当优异,已经发展成大数据主流计算引擎,在spark开发过程中有很多优化的点.其中去除重复计算是非常重要的.一般操作调用cache/persist,来缓存中间结果, ...
- SpringBoot + redis + @Cacheable注解实现缓存清除缓存
一.Application启动类添加注解 @EnableCaching 二.注入配置 @Bean public CacheManager cacheManager(RedisTemplate redi ...
- firefox、chrome的DNS缓存清除方法
通过设置hosts文件可以强制指定域名对应的IP,当修改hosts文件,想要浏览器生效,最直接的方法关闭浏览器后重新开启:如果不想重启浏览器,只需要清空浏览器的DNS缓存即可. 清空DNS缓存在chr ...
随机推荐
- mysql 字符串 拼接 截取 替换
一. 字符串拼接 concat('asdf',str); 说明: 拼接asdf 和 str 二. 字符串截取 从左开始截取字符串 left(str, length) 说明:) as abstract ...
- jenkins git 之 Advanced clone behaviours
jenins 上的 Git Plugin插件,默认是下载完整的历史版本,随着分支约多,历史版本约多,整个文件会很大,下载常常会超时. 单独的git命令可以使用以下方式来优化 git clone --d ...
- tomcat启动出错 invalid LOC header
tomcat启动出错 invalid LOC header,run as maven test 没有报错,只有警告: 'build.plugins.plugin.version' for org.ap ...
- Windows下安装配置Yaf框架的方法及创建典型合理的Demo目录结构
Yaf是一个C语言编写的PHP框架,由鸟哥Laruence开发的高性能框架: Yaf官方文档:http://www.laruence.com/manual/index.html 第一步:安装PHP扩展 ...
- Java正则表达式使用 | 叠加
public class Test { public static void main(String[] args) { String s = "ni\nhao\nma he yi\nyon ...
- PHP中多维数组var_dump展示不全
转载于http://blog.csdn.net/Merlin_feng/article/details/51733354
- react withClamp装饰器
Clamp.js 等待异步数据加载完后在初始化$clamp withClamp.js import React, { Component } from "react"; expor ...
- Java设计模式系列 — 构造器模式
想象下你有一个类,像下图所示有许多属性.假设你想让你的类不可变(顺便说一下,除非有一个好的理由不这样做,否则你应该坚持.但是我们会以另一种方式来达到要求.) public class User { p ...
- 剑指offer——python【第54题】字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...
- 代码块事务—TransactionScope
今天上班遇到这样的业务:将删除的用户信息记录到记录表,再删除用户表中的信息. 可以说是不幸也可以说是幸运的. 在以往遇到这样的业务,我会考虑到各种出现异常或者失败的情况.在删除一张表数据失败的情况,对 ...