一些常用网络工具历史记录的清理
2008-03-08 12:55:11 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔庣划顖炲Φ閸曨垰绠抽悗锝庝簽娴犻箖姊洪棃娑欐悙閻庢矮鍗抽悰顕€宕堕澶嬫櫖濠殿噯绲剧€笛囧箲閸ヮ剙钃熼柣鏂挎憸閻熷綊鏌涢…鎴濇灈妞ゎ剙鐗嗛—鍐Χ鎼粹€茬凹缂備緡鍠楅幐鎼佹偩閻戣棄纭€闁绘劕绉靛Λ鍐春閳ь剚銇勯幒鎴濐伀鐎规挷绀侀埞鎴︽偐閹绘帩浼€缂佹儳褰炵划娆撳蓟濞戞矮娌柟瑙勫姇椤ユ繈姊洪柅鐐茶嫰婢т即鏌熼搹顐e磳闁挎繄鍋涢埞鎴犫偓锝庘偓顓涙櫊閺屽秵娼幏灞藉帯闂佹眹鍊曢幊鎰閹惧瓨濯撮柛鎾村絻閸撳崬顪冮妶鍡楃仸闁荤啿鏅涢悾鐑藉Ψ瑜夐崑鎾绘晲鎼粹剝鐏嶉梺缁樻尰濞叉﹢濡甸崟顖氱疀闂傚牊绋愮花鑲╃磽娴h棄鐓愭慨妯稿妿濡叉劙骞樼拠鑼槰闂佸啿鎼崐濠毸囬弶搴撴斀妞ゆ梻銆嬪銉︺亜椤撶偛妲婚柣锝囧厴楠炴帡骞嬮弮鈧悗濠氭⒑鐟欏嫭鍎楅柛妯衡偓鐔插徍濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩绾惧鏌熼崜褏甯涢柍閿嬪灦閵囧嫰骞掗崱妞惧缂傚倷绀侀ˇ閬嶅极婵犳氨宓侀柛鈩冪⊕閸婄兘鏌涘┑鍡楊伀妞ゆ梹鍔曢埞鎴︽倻閸モ晝校闂佸憡鎸婚悷锔界┍婵犲洦鍤冮柍鍝勫暟閿涙粓姊鸿ぐ鎺戜喊闁告瑥楠搁埢鎾斥堪閸喓鍘搁柣蹇曞仧绾爼宕戦幘璇茬疀濞达絽鎲¢崐顖炴⒑绾懎浜归悶娑栧劦閸┾偓妞ゆ帒鍟惃娲煛娴e湱澧柍瑙勫灴閹瑩寮堕幋鐘辨闂備礁婀辨灙闁硅姤绮庨崚鎺楀籍閸喎浠虹紓浣割儓椤曟娊鏁冮崒娑氬幈闂佸搫娲㈤崝宀勬倶閻樼粯鐓曢柟鑸妼娴滄儳鈹戦敍鍕杭闁稿﹥鐗犲畷婵嬫晝閳ь剟鈥﹂崸妤€鐒垫い鎺嶈兌缁犲墽鈧厜鍋撳┑鐘辩窔閸嬫鈹戦纭烽練婵炲拑绲垮Σ鎰板箳閹冲磭鍠撻幏鐘绘嚑閼稿灚姣愰梻鍌氬€烽懗鑸电仚濠电偛顕崗妯侯嚕椤愩倖瀚氱€瑰壊鍠栧▓銊︾節閻㈤潧校缁炬澘绉瑰鏌ュ箵閹烘繄鍞甸柣鐘烘鐏忋劌顔忛妷褉鍋撶憴鍕碍婵☆偅绻傞~蹇涙惞閸︻厾锛滃┑鈽嗗灠閹碱偊锝炲鍥╃=濞达綁顥撻崝宥夋煙缁嬪灝鏆遍柣锝囧厴楠炲鏁冮埀顒傜不婵犳碍鍋i柛銉戝啰楠囬悗瑙勬尭缁夋挳鈥旈崘顔嘉ч柛鈩兠棄宥囩磽娴e壊鍎愰柛銊ュ缁顓兼径瀣偓閿嬨亜閹哄秶顦︾€殿喖鐏濋埞鎴﹀煡閸℃浠梺鍛婎焼閸曨収娲告俊銈忕到閸燁垶宕愰崹顐e弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�

核心提示:bool ClearIEHistory(void) //清理IE缓存{ try { //页面文件的清理 HANDLE hEntry; LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL; DWord dwEntrySize = 0; hEntry = Fin
bool ClearIEHistory(void) //清理IE缓存
{
try
{
//页面文件的清理
HANDLE hEntry;
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
DWord dwEntrySize = 0;
hEntry = FindFirstUrlCacheEntry(NULL, NULL, &dwEntrySize);
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
hEntry = FindFirstUrlCacheEntry(NULL, lpCacheEntry, &dwEntrySize);
if(hEntry)
{
do
{
DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
dwEntrySize = 0;
FindNextUrlCacheEntry(hEntry, NULL, &dwEntrySize);
delete [] lpCacheEntry;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
}
while (FindNextUrlCacheEntry(hEntry, lpCacheEntry, &dwEntrySize));
}
// 清浏览网址历史记录
HRESULT hr;
IUrlHistoryStg2* pUrlHistoryStg2 = NULL;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER, IID_IUrlHistoryStg2, (void**)&pUrlHistoryStg2);
if (SUCCEEDED(hr))
{
hr = pUrlHistoryStg2->ClearHistory();
pUrlHistoryStg2->Release();
}
CoUninitialize();
//浏览器地址栏历史地址的清除
SHDeleteKey(HKEY_CURRENT_USER, _TEXT("Software\\Microsoft\\Internet EXPlorer\\TypedURLs"));
return true;
}
catch(...)
{
return false;
}
}
bool ClearQQHistory(void) //清理QQ账户文件夹
{
try
{
LPCTSTR szFullPath, szDirectory;
LPCTSTR szQQRegPath = _TEXT("SOFTWARE\\Tencent\\PlatForm_Type_List\\1\\");
LPCTSTR szTMRegPath = _TEXT("SOFTWARE\\Tencent\\PlatForm_Type_List\\2\\");
LPCTSTR szQQGameRegPath = _TEXT("SOFTWARE\\Tencent\\QQGame\\SYS\\");
LPCTSTR szQQGameCfgFile = _TEXT("config\\Info.ini");
if( FindKey_STR(true, szQQRegPath, _TEXT("TypePath")) )
{
if( ReadKey_STR(true, szQQRegPath, _TEXT("TypePath"), MAX_PATH, szFullPath) )
{
if(lstrlen(szFullPath)>=9)
{
szDirectory = new const TCHAR[lstrlen(szFullPath)-6+1]; // \QQ.exe
memset((LPTSTR)szDirectory, TCHAR('\0'), lstrlen(szFullPath)-6+1);
_tcsncpy((LPTSTR)szDirectory, szFullPath, lstrlen(szFullPath)-6);
DeleteAccountFolders(szDirectory, _TEXT("LoginUinList.DAT"));
}
}
} 三层交换技术 交换机与路由器密码恢复 交换机的选购 路由器设置专题 路由故障处理手册 数字化校园网解决方案
if( FindKey_STR(true, szTMRegPath, _TEXT("TypePath")) )
{
if( ReadKey_STR(true, szTMRegPath, _TEXT("TypePath"), MAX_PATH, szFullPath) )
{
if(lstrlen(szFullPath)>=16)
{
szDirectory = new const TCHAR[lstrlen(szFullPath)-13+1]; // \TMDlls\TM.exe
memset((LPTSTR)szDirectory, TCHAR('\0'), lstrlen(szFullPath)-13+1);
_tcsncpy((LPTSTR)szDirectory, szFullPath, lstrlen(szFullPath)-13);
DeleteAccountFolders(szDirectory, _TEXT("LoginUinList.DAT"));
}
}
}
if( FindKey_STR(true, szQQGameRegPath, _TEXT("HallDirectory")) )
{
if( ReadKey_STR(true, szQQGameRegPath, _TEXT("HallDirectory"), MAX_PATH, szFullPath) )
{
DeleteAccountFolders(szFullPath, _TEXT("User.cfg"));
LPCTSTR szCfgFile;
if(szDirectory[lstrlen(szFullPath)-1] != TCHAR('\\'))
{
szCfgFile = new const TCHAR[lstrlen(szFullPath)+lstrlen(szQQGameCfgFile)+2];
lstrcpy((LPTSTR)szCfgFile, szFullPath);
lstrcat((LPTSTR)szCfgFile, _TEXT("\\"));
lstrcat((LPTSTR)szCfgFile, szQQGameCfgFile);
}
else
{
szCfgFile = new const TCHAR[lstrlen(szFullPath)+lstrlen(szQQGameCfgFile)+1];
lstrcpy((LPTSTR)szCfgFile, szFullPath);
lstrcat((LPTSTR)szCfgFile, szQQGameCfgFile);
}
DeleteFile(szCfgFile);
}
}
return true;
}
catch(...)
{
return false;
}
}
bool ClearMSNHistory(void) //清理MSN账户文件夹
{
try
{
LPCTSTR szFullPath, szDirectory;
LPCTSTR* szSubKeysList;
DWORD dwListLen;
LPCTSTR szMSNRegPath = _TEXT("Software\\Microsoft\\MSNMessenger\\PerPassportSettings\\");
LPCTSTR szMSNUserPath = _TEXT("Software\\Microsoft\\IdentityCRL\\");
LPCTSTR szMSNUserPathEx = _TEXT("Creds\\");
LPCTSTR szMSNUserMajor = _TEXT("ConfigMajorVersion");
LPCTSTR szMSNUserMinor = _TEXT("ConfigMinorVersion");
szFullPath = new const TCHAR[lstrlen(szMSNUserPath)+lstrlen(szMSNUserPathEx)+1];
lstrcpy((LPTSTR)szFullPath, szMSNUserPath);
lstrcat((LPTSTR)szFullPath, szMSNUserPathEx);
SHDeleteKey(HKEY_CURRENT_USER, szFullPath);
DeleteKey(false, szMSNUserPath, szMSNUserMajor);
DeleteKey(false, szMSNUserPath, szMSNUserMinor);
if( ReadKey_SUBKEYS(false, szMSNRegPath, MAX_PATH, szSubKeysList, dwListLen) )
{
for(DWORD nCount=0; nCount
if( lstrcmp(szSubKeysList[nCount], _TEXT("0")) == 0 )
{
continue;
}
if(szSubKeysList[nCount][lstrlen(szSubKeysList[nCount])-1] != TCHAR('\\'))
{
szFullPath = new const TCHAR[lstrlen(szMSNRegPath)+lstrlen(szSubKeysList[nCount])+2];
memset((LPTSTR)szFullPath, TCHAR('\0'), lstrlen(szMSNRegPath)+lstrlen(szSubKeysList[nCount])+2);
lstrcpy((LPTSTR)szFullPath, szMSNRegPath);
lstrcat((LPTSTR)szFullPath, szSubKeysList[nCount]);
lstrcat((LPTSTR)szFullPath, _TEXT("\\"));
}
else
{
szFullPath = new const TCHAR[lstrlen(szMSNRegPath)+lstrlen(szSubKeysList[nCount])+1];
memset((LPTSTR)szFullPath, TCHAR('\0'), lstrlen(szMSNRegPath)+lstrlen(szSubKeysList[nCount])+1);
lstrcpy((LPTSTR)szFullPath, szMSNRegPath);
lstrcat((LPTSTR)szFullPath, szSubKeysList[nCount]);
}
if( FindKey_STR(false, szFullPath, _TEXT("MessageLogPath")) )
{
szDirectory = new const TCHAR[MAX_PATH*2];
memset((LPTSTR)szDirectory, TCHAR('\0'), MAX_PATH*2);
if( ReadKey_STR(false, szFullPath, _TEXT("MessageLogPath"), MAX_PATH*2, szDirectory) )
{
DeleteFolder(szDirectory);
}
}
SHDeleteKey(HKEY_CURRENT_USER, szFullPath);
}
}
else
{
return false;
}
return true;
}
catch(...)
{
return false;
}
}
bool DeleteAccountFolders(LPCTSTR szDirectory, LPCTSTR szListFileName) //删除所有的号码文件夹
{
try
{
if( !::PathFileExists(szDirectory) )
{
return false;
}
LPCTSTR szSerach;
if(szDirectory[lstrlen(szDirectory)-1] != TCHAR('\\'))
{
szSerach = new const TCHAR[lstrlen(szDirectory)+5];
memset((LPTSTR)szSerach, TCHAR('\0'), lstrlen(szDirectory)+5);
lstrcpy((LPTSTR)szSerach, szDirectory);
lstrcat((LPTSTR)szSerach, _TEXT("\\*.*"));
}
else
{
szSerach = new const TCHAR[lstrlen(szDirectory)+4];
memset((LPTSTR)szSerach, TCHAR('\0'), lstrlen(szDirectory)+4);
lstrcpy((LPTSTR)szSerach, szDirectory);
lstrcat((LPTSTR)szSerach, _TEXT("*.*"));
}
WIN32_FIND_DATA wfd;
HANDLE hFind;
if ((hFind = FindFirstFile(szSerach, &wfd)) == INVALID_HANDLE_VALUE)
{
return false;
}
LPCTSTR szFullPath;
bool bNeedDelete;
do
{
bNeedDelete = true;
if( (lstrcmp(wfd.cFileName, _TEXT("0")) == 0) (lstrcmp(wfd.cFileName, _TEXT("\\0")) == 0) ) //"0"是非凡文件夹
{
continue;
}
szFullPath = new const TCHAR[lstrlen(szDirectory)+lstrlen(wfd.cFileName)+1];
memset((LPTSTR)szFullPath, TCHAR('\0'), lstrlen(szDirectory)+lstrlen(wfd.cFileName)+1);
lstrcpy((LPTSTR)szFullPath, szDirectory);
lstrcat((LPTSTR)szFullPath, wfd.cFileName);
if(FALSE == PathIsDirectory(szFullPath)) //是否是文件夹
{
if( _tcsicmp(wfd.cFileName, szListFileName) == 0 ) //号码列表文件
{
DeleteFile(szFullPath);
}
continue;
}
for(u_short nCount=0; nCount
if( (wfd.cFileName[nCount] < TCHAR('0')) (wfd.cFileName[nCount] > TCHAR('9')) ) //是否为纯数字
{
if(wfd.cFileName[nCount] != TCHAR('\\'))
{
bNeedDelete = false;
break;
}
}
}
if(bNeedDelete)
{
DeleteFolder(szFullPath);
}
}
while( FindNextFile(hFind, &wfd) );
return true;
}
catch(...)
{
return false;
}
}
bool DeleteFolder(LPCTSTR szFolderName) //删除某个文件夹
{
try
{
if( (!::PathFileExists(szFolderName)) (FALSE == PathIsDirectory(szFolderName)) )
{
return false;
}
LPCTSTR szNewFolderName;
if(szFolderName[lstrlen(szFolderName)-1] == TCHAR('\\'))
{
szNewFolderName = new const TCHAR[lstrlen(szFolderName)+1];
memset((LPTSTR)szNewFolderName, TCHAR('\0'), lstrlen(szFolderName)+1); //szNewFolderName 后面需要两个字串结束符
_tcsncpy((LPTSTR)szNewFolderName, szFolderName, lstrlen(szFolderName)-1);
}
else
{
szNewFolderName = new const TCHAR[lstrlen(szFolderName)+2];
memset((LPTSTR)szNewFolderName, TCHAR('\0'), lstrlen(szFolderName)+2); //szNewFolderName 后面需要两个字串结束符
_tcscpy((LPTSTR)szNewFolderName, szFolderName);
}
SHFILEOPSTRUCT fos;
ZeroMemory(&fos, sizeof(fos));
fos.hwnd = HWND_DESKTOP;
fos.wFunc = FO_DELETE;
fos.fFlags = FOF_SILENT FOF_NOCONFIRMATION FOF_NOERRORUI;// FOF_ALLOWUNDO;
fos.pFrom = szNewFolderName;
if(SHFileOperation(&fos) == 0)
{
return true;
}
return false;
}
catch( ... )
{
return false;
}
}
******************************************************************************
bool FindKey_STR(bool RegRootFlag, LPCTSTR RegPath, LPCTSTR theKey)
{
HKEY hKEY;
try
{
long lRet;
if(RegRootFlag)
{
lRet = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegPath, 0, KEY_QUERY_VALUE, &hKEY));
}
else
{
lRet = (::RegOpenKeyEx(HKEY_CURRENT_USER, RegPath, 0, KEY_QUERY_VALUE, &hKEY));
}
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
return false;
}
DWORD dwKeyType = REG_SZ;
lRet =::RegQueryValueEx(hKEY, theKey, NULL, &dwKeyType, NULL, NULL);
if( lRet != ERROR_SUCCESS )
{
::RegCloseKey(hKEY);
return false;
}
::RegCloseKey(hKEY);
return true;
}
catch( ... )
{
::RegCloseKey(hKEY);
return false;
}
}
bool ReadKey_STR(bool RegRootFlag, LPCTSTR RegPath, LPCTSTR theKey, DWORD KeyLength, LPCTSTR &theKeyValue)
{
HKEY hKEY;
KeyLength = (KeyLength+1)*sizeof(TCHAR);
LPBYTE lpKeyValue = new BYTE[KeyLength];
try
{
long lRet;
if(RegRootFlag)
{
lRet = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegPath, 0, KEY_READ, &hKEY));
}
else
{
lRet = (::RegOpenKeyEx(HKEY_CURRENT_USER, RegPath, 0, KEY_READ, &hKEY));
}
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
delete[] lpKeyValue;
return false;
}
DWORD dwKeyType = REG_SZ;
if(KeyLength == 0)
{
KeyLength = 5;
}
lRet =::RegQueryValueEx(hKEY, theKey, NULL, &dwKeyType, lpKeyValue, KeyLength);
if( lRet == ERROR_MORE_DATA )
{
LPBYTE lpKeyValue = new BYTE[KeyLength];
lRet =::RegQueryValueEx(hKEY, theKey, NULL, &dwKeyType, lpKeyValue, KeyLength);
}
theKeyValue = (LPCTSTR)lpKeyValue;
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
delete[] lpKeyValue;
return false;
}
::RegCloseKey(hKEY);
//delete[] lpKeyValue;
return true;
}
catch( ... )
{
::RegCloseKey(hKEY);
delete[] lpKeyValue;
return false;
}
}
bool WriteKey_STR(bool RegRootFlag, LPCTSTR RegPath, LPCTSTR theKey, DWORD KeyLength, LPCTSTR theKeyValue)
{
HKEY hKEY;
KeyLength = (KeyLength+1)*sizeof(TCHAR);
const BYTE* lpKeyValue = (LPBYTE)theKeyValue;
try
{
long lRet;
DWORD dwDisposition;
if(RegRootFlag)
{
lRet = (::RegCreateKeyEx(HKEY_LOCAL_MACHINE, RegPath, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKEY, &dwDisposition));
}
else
{
lRet = (::RegCreateKeyEx(HKEY_CURRENT_USER, RegPath, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKEY, &dwDisposition));
}
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
delete[] lpKeyValue;
return false;
}
DWORD dwKeyType = REG_SZ;
if(KeyLength == 0)
{
KeyLength = 260;
}
lRet =::RegSetValueEx(hKEY, theKey, NULL, dwKeyType, lpKeyValue, KeyLength);
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
delete[] lpKeyValue;
return false;
}
return true;
}
catch( ... )
{
::RegCloseKey(hKEY);
delete[] lpKeyValue;
return false;
}
}
bool DeleteKey(bool RegRootFlag, LPCTSTR RegPath, LPCTSTR theKey)
{
HKEY hKEY;
try
{
long lRet;
if(RegRootFlag)
{
lRet = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegPath, 0, KEY_ALL_access, &hKEY));
}
else
{
lRet = (::RegOpenKeyEx(HKEY_CURRENT_USER, RegPath, 0, KEY_ALL_ACCESS, &hKEY));
}
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
return false;
}
lRet =::RegDeleteValue(hKEY, theKey);
::RegCloseKey(hKEY);
return true;
}
catch( ... )
{
::RegCloseKey(hKEY);
return false;
}
}
bool ReadKey_SUBKEYS(bool RegRootFlag, LPCTSTR RegPath, DWORD SubKeyLength, LPCTSTR* &theKeysList, DWORD &ListLen)
{
HKEY hKEY;
try
{
long lRet;
if(RegRootFlag)
{
lRet = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegPath, 0, KEY_ENUMERATE_SUB_KEYS, &hKEY));
}
else
{
lRet = (::RegOpenKeyEx(HKEY_CURRENT_USER, RegPath, 0, KEY_ENUMERATE_SUB_KEYS, &hKEY));
}
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
return false;
}
ListLen = 0;
DWORD dwPreLen = SubKeyLength;
LPTSTR lpName;
lpName = new TCHAR[SubKeyLength];
memset(lpName, TCHAR('\0'), SubKeyLength);
while( ::RegEnumKeyEx(hKEY, ListLen, lpName, &SubKeyLength, NULL, NULL, NULL, NULL) == ERROR_SUCCESS )
{
SubKeyLength = dwPreLen;
ListLen++;
}
if(ListLen == 0)
{
::RegCloseKey(hKEY);
return false;
}
theKeysList = new LPCTSTR[ListLen];
for(DWORD nCount=0; nCount
SubKeyLength = dwPreLen;
theKeysList[nCount] = new const TCHAR[SubKeyLength];
memset((LPTSTR)theKeysList[nCount], TCHAR('\0'), SubKeyLength);
lRet = ::RegEnumKeyEx(hKEY, nCount, (LPTSTR)theKeysList[nCount], &SubKeyLength, NULL, NULL, NULL, NULL);
if(lRet != ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
return false;
}
}
return true;
}
catch(...)
{
return false;
}
}
赞助商链接