該文章是“個人電腦歷史記錄清除軟件”項目的系統應用系列文章.
前面"C# 系統應用之清除Cookies、IE臨時文件、歷史記錄"中已經講述了借助RunDll32.exe運行dll文件實現清除IE緩存操作,同時網上有很多方法講述刪除操作的,但怎樣獲取IE浏覽器中最近浏覽的網站歷史記錄和IE浏覽器的地址欄輸入的網址呢?這是我這篇文章需要講解的知識.
前文說過在Windows中IE歷史記錄的位置為:"C:\Users\dell\AppData\Local\Microsoft\Windows\History",歷史記錄是存放最近時間訪問過的網站地址,它以時間和站點存儲.如下圖所示:

那麼,我們可以通過Environment.GetFolderPath(Environment.SpecialFolder.History)獲取IE歷史記錄.
private void button3_Click(object sender, EventArgs e)
{
//清空listBox
listBox1.Items.Clear();
//獲取Internet歷史記錄文件路徑
string dirPath = Environment.GetFolderPath(Environment.SpecialFolder.History);
listBox1.Items.Add("Internet歷史記錄路徑:");
listBox1.Items.Add(dirPath);
//遍歷所有的文件夾 顯示所有文件
DirectoryInfo dir = new DirectoryInfo(dirPath);
int num = 1;
foreach (FileInfo file in dir.GetFiles("*.*", SearchOption.AllDirectories))
{
try
{
listBox1.Items.Add("(" + num + ") " + file);
num++;
}
catch (Exception msg) //異常處理
{
MessageBox.Show(msg.Message);
}
}
}
其中Environment.GetFolderPath(Environment.SpecialFolder.XXX)用於檢索系統特殊文件夾的路徑,常見有:
(1).History 用作 Internet 歷史記錄項的公共儲存庫的目錄
(2).Cookies 用作 Internet Cookie 的公共儲存庫的目錄
(3).InternetCache 用作 Internet 臨時文件的公共儲存庫的目錄
(4).Recent 包含用戶最近使用過的文檔的目錄
(5).MyPictures “My Pictures”文件夾
(6).MyDocuments “我的電腦”文件夾
(7).ProgramFiles “Program files”目錄
但是運行它進行刪除delete操作或獲取操作時,它常常會有系統文件,很多文件不能訪問到.在刪除中就會遇到"該文件正在另一進程使用,因此該進程無法訪問此文件"或"文件訪問被拒絕".而采用RunDll32.exe調用Win32 API函數ShellExecute()執行實現的.同樣,使用它獲取得到的歷史記錄如下圖所示.顯然不是我想要的結果,同時在清除Cookies後還是能顯示很多Cookies信息.猜測是Google、360等浏覽器的?