本文主要是項目"個人電腦使用記錄清除軟體"系類文章中關于清除浏覽器cookies、ie臨時檔案、最近使用曆史記錄等内容.該篇文章的基本思想路線是首先了解上網曆史記錄的windows中常用檔案路徑,再通過檔案delete方法删除該檔案下内容,但是很多檔案不能讀取的;最後的解決方案是借助rundll32.exe的internet實作删除緩存功能.
internet explorer中有指定的檔案夾存儲上網記錄所有資訊,包括ie緩存檔案、cookies檔案、最近浏覽的曆史記錄、通路過的網址、位址欄網址及ie表格/密碼記錄、臨時檔案等.在講述删除ie緩存之前,先簡單介紹cookie、internet臨時檔案、ie曆史記錄的檔案路徑.
1.windows中cookie儲存位置為"c:\users\dell\appdata\roaming\microsoft\windows\cookies".cookie記錄使用者id、密碼、浏覽器過的網頁、停留時間等資訊.如下圖所示:

2.windows中internet臨時檔案位置為"c:\users\dell\appdata\local\microsoft\windows\temporary
internet files",它存放着最近浏覽過的網頁的内容(網頁|圖像|媒體副本等)以便以後快速查詢并提高速度.
3.windows中ie曆史記錄位置為"c:\users\dell\appdata\local\microsoft\windows\history",曆史記錄是存放最近時間通路過的網站位址,它以時間和站點存儲.如下圖所示:
ie通常清除曆史記錄還包括:下載下傳曆史記錄、表單資料、密碼、activex等資料,如下圖:
通過environment.getfolderpath(environment.specialfolder.internetcache)擷取temporary internet files檔案(internet臨時檔案),并擷取其中的.dat檔案路徑.
同時引用命名空間using system.io;運作結果如下所示:
這樣,似乎清空該檔案夾下所有檔案就實作了清除internet臨時檔案的功能,但是使用file.delete(filename)删除檔案夾中檔案會遇到"該檔案正在另一程序使用,是以該程序無法通路此檔案"或"檔案通路被拒絕".因為temporary internet files目錄是系統檔案夾,讀取不到有些檔案.
借助rundll32.exe運作internet選項對應dll檔案,實作清除ie緩存(internet臨時檔案、cookies、浏覽器曆史記錄、表單記錄、使用者名密碼等).
<一>.rundll32.exe
rundll32.exe(運作32位dll檔案)的作用是執行dll檔案中的内部函數,通過指令行方式調用動态連結程式庫,其指令行的使用方法是:rundll32.exe dllname,functionname [arguments].(其中dllname為需要執行dll檔案名,functionname為執行dll檔案的具體引用函數,[arguments]為引出函數的具體參數).
ctrl+r調用運作輸入指令執行,可運作相應的操作.如rundll32.exe shell32.dll,control_rundll功能就是執行顯示控制台.其中關于清除ie緩存操作如下:
<二>.shellexecute
采用調用win32 api函數shellexecute()執行上面指令行實作清除功能的.shellexecute的功能是運作一個外部程式或者是打開一個已注冊的檔案、打開一個目錄、列印一個檔案等等,并對外部程式有一定的控制.它的函數原型及參數定義如下:
其中dllimport需要引用命名控件using system.runtime.interopservices;同時它rundll32.exe inetcpl.cpl,clearmytracksbyprocess 255删除所有檔案.intptr結構用于表示指針或句柄特定類型,intptr.zero初始化為零的句柄.運作結果如下圖所示:
注意:雖然學習了shellexecute的具體使用方法,但是還是關于showcommands參數沒有弄明白它具體的變化;同時相關方面書籍太少,希望大家提供些這方面書籍和更好的方法.
<三>.shellexecute功能擴充
shellexecute()函數還用很多功能可以給大家帶來友善,下面介紹簡單幾個用法.(替換上面button1代碼)
<四>.調用process啟動rundll32.exe
借助rundll32,exe運作internet選項實作删除臨時檔案也可以調用process啟動rundll32.exe實作.下面代碼僅供參考,我沒有研究該方法,僅作為線上筆記供自己檢視:
該文章主要結合自己的項目清除浏覽器的cookies、ie臨時檔案、最近曆史記錄,文章很好的展現了我的思想:
1.首先作者想到擷取相應的指定檔案的路徑,清空該路徑下的檔案即可實作該功能;
2.但是由于系統檔案不能通路或停止,是以作者尋找到了借助rundll32.exe實作,主要講述調用win32 api函數shellexecute删除ie緩存;
3.最後補充了shellexcute()函數的功能和其他操作、調用process啟動rundll32.exe的代碼.
同時作者在系列文章中先講述了擷取windows最近使用曆史記錄文章、cookies和session的使用,最後才完成該文章實作清除曆史記錄操作(其他方法同理).
最後希望該文章對大家有所幫助,如果有錯誤或不足之處,請大家海涵!