該文章是“個人電腦歷史記錄清除軟件”項目的系統應用系列文章.
前面"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等浏覽器的?