日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 系统应用之清除Cookies、IE临时文件、历史记录

發布時間:2024/5/28 C# 85 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 系统应用之清除Cookies、IE临时文件、历史记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要是項目"個人電腦使用記錄清除軟件"系類文章中關于清除瀏覽器Cookies、IE臨時文件、最近使用歷史記錄等內容.該篇文章的基本思想路線是首先了解上網歷史記錄的Windows中常用文件路徑,再通過文件delete方法刪除該文件下內容,但是很多文件不能讀取的;最后的解決方案是借助RunDll32.exe的Internet實現刪除緩存功能.

一. IE歷史記錄文件路徑

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等數據,如下圖:

二. 采用文件delete刪除

通過Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)獲取Temporary Internet Files文件(Internet臨時文件),并獲取其中的.dat文件路徑.

//獲取IE臨時文件 private void button2_Click(object sender, EventArgs e) {listBox1.Items.Clear();string dirPath = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);this.textBox1.Text = dirPath.ToString();DirectoryInfo dir = new DirectoryInfo(dirPath); //遍歷所有的文件夾 顯示.dat的文件foreach (FileInfo file in dir.GetFiles("*.jpg", SearchOption.AllDirectories)){try {listBox1.Items.Add(file.DirectoryName + "\\"+ file);//file.Delete();}catch(Exception msg) //異常處理{MessageBox.Show(msg.Message);}} }

同時引用命名空間using System.IO;運行結果如下所示:

這樣,似乎清空該文件夾下所有文件就實現了清除Internet臨時文件的功能,但是使用File.Delete(FileName)刪除文件夾中文件會遇到"該文件正在另一進程使用,因此該進程無法訪問此文件"或"文件訪問被拒絕".因為Temporary?Internet?Files目錄是系統文件夾,讀取不到有些文件.
(該資源關于IE臨時文件獲取查看刪除,供大家學習http://download.csdn.net/detail/jee89731/3465688)

三. 調用rundll32.exe實現

?借助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緩存操作如下:

//1.History (歷史記錄) RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1 //2.Cookies RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2 //3.Temporary Internet Files (Internet臨時文件) RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 //4.Form. Data (表單數據) RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16 //5.Passwords (密碼) RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32 //6.Delete All (全部刪除) RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255 //7.Delete All - "Also delete files and settings stored by add-ons" RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351

<二>.ShellExecute

采用調用Win32 API函數ShellExecute()執行上面命令行實現清除功能的.ShellExecute的功能是運行一個外部程序或者是打開一個已注冊的文件、打開一個目錄、打印一個文件等等,并對外部程序有一定的控制.它的函數原型及參數定義如下:

//ShellExecute函數運行一個外部程序并對程序進行控制(執行成功返回應用程序句柄) static extern IntPtr ShellExecute(IntPtr hwnd, //用于指定父窗口句柄string lpOperation, //用于指定要進行的操作.其中open打開FileName指定文件或文件夾 print打印 explore瀏覽(runas edit find)string lpFileName, //用于指定要操作的文件名或要執行的程序文件名string lpParameters, //給要打開程序指定參數.若FileName是可執行程序,則此參數指定命令行參數.否則打開的是文件此處參數為nilstring lpDirectory, //缺省目錄,用于指定默認目錄ShowCommands nShowCmd //打開選項.若FileName參數是可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數為0 );//ShellExecute函數ShowCmd參數可選值 public enum ShowCommands : int {SW_HIDE = 0, //隱藏窗口并活動狀態另一個窗口(激活)SW_SHOWNORMAL = 1, //用原來的大小和位置顯示窗口,激活SW_NORMAL = 1, //同SW_SHOWNORMALSW_SHOWMINIMIZED = 2, //最小化窗口,激活SW_SHOWMAXIMIZED = 3, //最大化窗口,激活SW_MAXIMIZE = 3, //同SW_SHOWMAXIMIZEDSW_SHOWNOACTIVATE = 4, //用最近的大小和位置顯示,不改變活動窗口(不激活)SW_SHOW = 5, //同SW_SHOWNORMALSW_MINIMIZE = 6, //最小化窗口,不激活SW_SHOWMINNOACTIVE = 7, //同SW_MINIMIZESW_SHOWNA = 8, //同SW_SHOWNOACTIVATESW_RESTORE = 9, //同SW_SHOWNORMALSW_SHOWDEFAULT = 10, //同SW_SHOWNORMALSW_FORCEMINIMIZE = 11, //最小化窗口SW_MAX = 11 //同SW_SHOWNORMAL }

通過[DllImport("shell32.dll")]來調用Win32 API(這些API是微軟提供的程序接口),導入后才能調用API聲明形式所在類庫.而shell32.dll該系統文件是存放在Windows系統文件夾中的重要文件,通常情況下安裝操作系統過程中自定創建.程序源代碼如下:

//ShellExecute函數ShowCmd參數可選值 public enum ShowCommands : int {SW_HIDE = 0,SW_SHOWNORMAL = 1,SW_NORMAL = 1,SW_SHOWMINIMIZED = 2,SW_SHOWMAXIMIZED = 3,SW_MAXIMIZE = 3,SW_SHOWNOACTIVATE = 4,SW_SHOW = 5,SW_MINIMIZE = 6,SW_SHOWMINNOACTIVE = 7,SW_SHOWNA = 8,SW_RESTORE = 9,SW_SHOWDEFAULT = 10,SW_FORCEMINIMIZE = 11,SW_MAX = 11 }//調用Win32 API [DllImport("shell32.dll")] static extern IntPtr ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, ShowCommands nShowCmd);//點擊button1刪除IE臨時文件 private void button1_Click(object sender, EventArgs e) {ShellExecute(IntPtr.Zero, "open", "rundll32.exe","InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_SHOWMAXIMIZED); }

其中DllImport需要引用命名控件using System.Runtime.InteropServices;同時它RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255刪除所有文件.IntPtr結構用于表示指針或句柄特定類型,IntPtr.Zero初始化為零的句柄.運行結果如下圖所示:

注意:雖然學習了ShellExecute的具體使用方法,但是還是關于ShowCommands參數沒有弄明白它具體的變化;同時相關方面書籍太少,希望大家提供些這方面書籍和更好的方法.

<三>.ShellExecute功能擴展
ShellExecute()函數還用很多功能可以給大家帶來方便,下面介紹簡單幾個用法.(替換上面button1代碼)

//調用rundll32.exe清除歷史記錄 ShellExecute(IntPtr.Zero, "open", "rundll32.exe","InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_SHOWMAXIMIZED); //訪問csdn eastmount博客 ShellExecute(this.Handle, "open", "http://blog.csdn.net/eastmount", null, null, ShowCommands.SW_SHOW); //發送郵件 ShellExecute(this.Handle, "open", "mailto:eastmount@163.com",null, null, ShowCommands.SW_SHOW); //調用calc.exe打開計算器 ShellExecute(this.Handle, "open", "calc.exe", null, null, ShowCommands.SW_FORCEMINIMIZE); //調用NOTEPAD.EXE打開記事本 ShellExecute(this.Handle, "open", "NOTEPAD.EXE", null, null, ShowCommands.SW_SHOWNORMAL);

<四>.調用Process啟動RunDll32.exe

借助RunDll32,exe運行Internet選項實現刪除臨時文件也可以調用Process啟動RunDll32.exe實現.下面代碼僅供參考,我沒有研究該方法,僅作為在線筆記供自己查看:

//清除ie緩存、cookie以及一切記錄 private void IEclear() { Process process = new Process();process.StartInfo.FileName = "RunDll32.exe";process.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 255";process.StartInfo.UseShellExecute = false; //關閉Shell的使用process.StartInfo.RedirectStandardInput = true; //重定向標準輸入process.StartInfo.RedirectStandardOutput = true; //重定向標準輸出process.StartInfo.RedirectStandardError = true; //重定向錯誤輸出process.StartInfo.CreateNoWindow = true;process.Start(); }??

四. 總結

該文章主要結合自己的項目清除瀏覽器的Cookies、IE臨時文件、最近歷史記錄,文章很好的展現了我的思想:
1.首先作者想到獲取相應的指定文件的路徑,清空該路徑下的文件即可實現該功能;
2.但是由于系統文件不能訪問或停止,所以作者尋找到了借助RunDll32.exe實現,主要講述調用Win32 API函數ShellExecute刪除IE緩存;
3.最后補充了ShellExcute()函數的功能和其他操作、調用Process啟動RunDll32.exe的代碼.
同時作者在系列文章中先講述了獲取Windows最近使用歷史記錄文章、Cookies和Session的使用,最后才完成該文章實現清除歷史記錄操作(其他方法同理).
文章引用了百度百科C#清除IE臨時文件緩存cookies的方法?|xueer8835的文章 | zjw的文章?|?Adam Viki的文章 |CSDN刪除cookie討論?感謝這些作者,也希望大家可以通過該鏈接學習.
最后希望該文章對大家有所幫助,如果有錯誤或不足之處,請大家海涵!

(By:Eastmount 2014-1-28 夜1點http://blog.csdn.net/eastmount)

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C# 系统应用之清除Cookies、IE临时文件、历史记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。