c# u盘使用记录_C# 系统应用之通过注册表获取USB使用记录(一)
該文章是“個人電腦歷史記錄清除軟件”項目的系統應用系列文章.
前面已經講述了如何清除IE瀏覽器的歷史記錄、獲取Windows最近訪問文件記錄、清除回收站等功能.現在我需要完成的是刪除USB設備上的U盤、手機、移動硬盤等記錄,真心覺得這方面資料特別少.這篇文章首先主要講述了通過注冊表獲取USB使用記錄,希望對大家有所幫助.
一.注冊表基本知識
注冊表(registry)是Windows系統中一個重要的數據庫,它用于存儲有關應用程序、用戶和系統信息.注冊表的結構就像一顆樹.樹的頂級節點(hive)不能添加、修改和刪除.如下圖所示是Windows注冊表的頂級節點:
(1).HKEY_CURRENT_USER:包含當前登錄到Windows的用戶配置信息
(2).HKEY_USERS:包含計算機所有用戶的配置信息
(3).HKEY_LOCAL_MACHINE:包含與計算機相關的配置信息,不論用戶是否登錄
(4).HKEY_CLASSES_ROOT:包含將文件類型同程序關聯起來的信息及COM組件配置數據
(5).HKEY_CURRENT_CONFIG:包含本地計算機啟動時所使用的硬件描述文件.
詳見百度百科
二.C#中注冊表簡單使用
在前面"C# 系統應用之IE瀏覽器記錄和地址欄輸入網址"文章中我已經簡單的使用了通過注冊表獲取地址欄的信息并顯示.這里想講講注冊表常使用的獲取內容方法.主要代碼如下:
其中,RegistryKey類(MSDN)表示注冊表中的頂級結點,此類是注冊表封裝.Registry類(MSDN)提供表示Windows注冊表中的根項的RegistryKey對象,并提供訪問項/值.常用值如下對應的是注冊表頂級節點內容.
上面代碼獲取IE瀏覽器地址欄最近輸入URL對應的注冊表樹形路徑為:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
通過Registry.CurrentUser(HKEY_CURRENT_USER)中的OpenSubKey函數檢索指定的子項,并指定是否將寫訪問權限應用于該項.最后通過GetValueNames()獲取檢索的所有值.函數原型:
三.注冊表如何存儲USB信息
此處查閱多處資料并主要引用《計算機信息獲取系統的研究與實現》論文部分:http://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm
在Windows系統中,當一個USB移動存儲設備插入時,就會在注冊表中留下痕跡.當移動設備插入計算機時,即插即用管理器PnP(Plug and Play)接受該事件,并且在USB設備的固件(Firewre information)中查詢有關該設備的描述信息(廠商、型號、序列號等).當設備被識別后,在注冊表中創建一個新的鍵值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
在這個鍵值下,會看到類似下面的結構子鍵:(該子鍵代表設備類標示符,用來標識設備的一個特定類)
Disk&Ven_###&Prod_###&Rev_###
其中子鍵中"###"代表區域由PnP管理器依據在USB設備描述符中獲取的數據填寫.如下圖所示
Disk&Ven_aigo&Prod_Miniking&Rev_8.07是Device class ID
Q0UKCH37&0是Unique instance ID(UID)
如果使用UVCView工具可以看見USB設備描述內容,其中的信息都是相互對應的.設備類ID一旦建立,就需要建立一個特定唯一的UID.它可以把具有同一設備類標識的多個存儲設備區分.
四.程序實現獲取USB使用信息
具體代碼如下所示,同時希望大家去下載wnt08的代碼,很有幫助http://download.csdn.net/detail/lwnt08/3083499
運行結果如下圖所示:
其中對應的注冊表信息如下圖所示:
其中對應的FriendlyName即是輸出的“USB名稱 aigo Miniking USB Device”,UID序號為"Q0UKCH37".搜索的Service(服務)為disk(磁盤)的選項.
五.總結與展望
首先個人感觸,這方面的資料真心很少,文章博客也少,所以看起來操作似乎很簡單,但真正實現起來還是令人深思的.然后就是其實存儲USB記錄的還有很多鍵值.如
1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
該鍵值中能看到廠商號(VID_)、廠商產品號(PID_),還有LocationInformation(端口號) Port_#0001.Hub_#0005等.
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
該鍵值下有兩個設備類:{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}{53F5630d-B6BF-11D0-94F2-00A0C91EFB8B},可以通過他們獲取USB最后接入系統時間.
接下來我想要完成的就是如何把這些鍵值聯系起來,似乎要通過Dictionary,同時怎樣獲取時間,怎樣正確刪除這些信息.最后希望文章對大家有所幫助,如果有錯誤或不足之處,還請海涵!最后感謝下面參考資料的一些文章博客和作者.這類資料真心不好找,都是相關的內容而且不錯的,有的引用,有的沒有,但都不錯,也希望這些鏈接大家能用到.
(By:Eastmount 2014-4-8 夜1點半 原創CSDNhttp://blog.csdn.net/eastmount/)
參考資料及相似文章(值得一看):
1.《計算機信息獲取系統的研究與實現》論文講訴了計算機取證學及USB原理
http://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm
2.Tracking USB storage: Analysis ofwindowsartifacts generated by USB storage devices
英文文章,如何獲取USB使用記錄的時間及信息
http://www.sciencedirect.com/science/article/pii/S1742287605000320
3.用C# 編寫USB存儲設備使用痕跡檢測和刪除工具 講訴了如何刪除獲取分章節講解
http://blog.csdn.net/metaphysis/article/details/18504315
4.C# 讀取注冊表獲取U盤使用記錄
http://download.csdn.net/detail/lwnt08/3083499
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的c# u盘使用记录_C# 系统应用之通过注册表获取USB使用记录(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滚动的组件_微信小程序开发实战(11):
- 下一篇: win10卸载电脑管家就蓝屏_win10