VC中实现历史记录的全面清除

本文配套源码下载

前言:

在本人用完计算机之后,往往不希望别人发现你做过什么,和浏览过什么网址。(特别是和多人共用一台机子时)。当然,你可以手工清理那些记录。 但那是多么繁杂的一件事啊。 我想没人愿意那样做。于是,我想到用一个软件来一次性完成上述工作。

清除历史记录的文章很多,但是一般都不够全面。本人经过整理和收集一些资料,加以融合。得到了一个较全面的历史记录清除方法。

下图便是本文例子程序的运行效果图,我们可以从中看到该例子具体能实现的清除内容。

下面我们通过代码看看具体是如何实现的。

首先: 在 stdafx.h中要加入: #include "atlbase.h"

设置->Link 要引入库 : Wininet.lib shlwapi.lib

//在对话框的头文件中加入:

#include "wininet.h"
#include "UrlHist.h"
#define SWEEP_BUFFER_SIZE 10000
public:
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;
}

时间: 2024-10-02 21:53:54

VC中实现历史记录的全面清除的相关文章

winXP开始菜单中的历史记录怎么清除?

  本人使用的.是winXP系统的电脑,今天小编来分享下--清除winXP开始菜单中的历史记录应该怎么操作呢,请看下面的详情步骤吧: 方法/步骤 1.鼠标对准开始菜单,点右键,人出现一个下拉菜单,再点属性,如下面图片中所示. 2.进入任务栏和开始菜单属性后,点自定义.如下面图片中所示. 3.进入自定义开始菜单,点右下方的清除列表.如下面图片中所示. 4.点高级,如下面图片中所示. 5.点右下方的清除列表.如下面图片中所示. 6.最后点确定,就好了.如下面图片中所示. 注意事项 切记,我们使用此操

电脑中通过执行命令来清除IE浏览器隐私数据的方法

电脑中通过执行命令来清除IE浏览器隐私数据的方法  1.按Win+R打开运行,输入IE浏览器清除命令,如清除历史记录:RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1; 2.点击回车或确定后会显示"正在删除浏览历史记录"; 3.以下列举清除IE浏览器相关数据的命令: 清除Internet临时文件: RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 清除Cookies: RunDll32.

如何删除搜索框中的历史记录?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 时候你不想让别人看到你以前的搜索记录,那你就需要搜索框中的历史记录了: 如果您的浏览器是IE4,则由 查看->internet选项->内容->自动完成->清除表单->完成,如果您的浏览器是IE5,则由 工具->internet选项->内容->自动完成->清除表单->完成,如果您希望I

VC++中进程与多进程管理的方法详解_C 语言

本文实例讲述了VC++中进程与多进程管理的方法,分享给大家供大家参考.具体方法分析如下: 摘要: 本文主要介绍了多任务管理中的多进程管理技术,对进程的互斥运行.子进程的创建与结束等作了较详细的阐述. 关键词: VC++6.0:进程:环境变量:子进程 进程 进程是当前操作系统下一个被加载到内存的.正在运行的应用程序的实例.每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈.堆分

VC中的界面美化

本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者.读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理: 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制: 3. 熟悉OOP理论和技术: 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助.  正文1. 美化界面之开题篇相信使用过<金山毒霸>.<瑞星杀毒>软件的读者应该还记得它们的精美界面:     图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面

源码-求教一个vc中float转化的问题!

问题描述 求教一个vc中float转化的问题! 50C buffer[0] = 0xc6;buffer[1] = 0xc3;buffer[2] = 0x90;buffer[3] = 0x30; 哪位大神能给了源码吗,谢谢了!!不会搞,急死了! 解决方案 请教一个VC问题 解决方案二: 数据的在计算机中不是用二进制表示的嘛,4位16进制就需要用32位二进制来表示:然后低字节存地位,高字节存高位,也就是传说中的"小端模式":这个不需要什么源码,理解到了就行:理解不到就去看书 解决方案三:

在VC中使用MATLAB C/C++函数库

MATLAB广泛应用于线性代数.自动控制理论.数理统计.数字信号处理.时间序列分析.动态系统仿真等领域.因此如果在VC中对MATLAB进行调用将大大减少编程的工作量.保证程序的准确性,并且继承了VC++强大的功能,提高开发效率,本文将介绍了在VC中使用MATLAB函数库的具体步骤: 在VC中建立一个项目后: 1.设置: 添加路径: 在project-settings-c/C++-category:-preprocessor-Additional include directories:栏目中添加

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty

VC中的图片单击事件Picture Control

VC 中Picture Control 添加图片和单击事件,比C#等语言稍微较麻烦 一.添加图片 1.在窗体添加Picture Control控件 2.代码添加图片 HBITMAP hBmpWSUS = (HBITMAP)LoadImage (AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_BITMAP_WSUS), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS); // 关联图片ID HBITMAP hBmpVIRUS =