程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 用 C# 編寫 USB 存儲設備使用痕跡檢測和刪除工具

用 C# 編寫 USB 存儲設備使用痕跡檢測和刪除工具

編輯:C#入門知識



編寫 USB存儲設備使用痕跡檢測和刪除工具

(C# Windows Form編程練習)

[版權所有 邱秋 2014 [email protected],轉載請注明出處]

第一節 准備知識

之前一直都是用Visual Basic .Net來寫Windows Form程序。這幾天,熟悉了一下 C#語言的語法,想練習一下。以前使用過一些 USB存儲設備使用痕跡檢測和刪除工具,於是想寫了一個小工具來模擬這些功能。

USB存儲設備在使用後會在注冊表留下一些記錄,一般是通過檢索相應的注冊表鍵值來檢查使用痕跡。這些鍵值包括:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Enum\USB

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Enum\USBSTOR

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}

其中 ControlSetXXX和 CurrentControlSetXXX表示的是注冊表中的類似於ControlSet001、ControlSet002、CurrentControlSet這樣的子鍵(CurrentControlSet子鍵一般只有一個,特殊情況下可能有CurrentControlSet001等多個,同樣的 ControlSet一般只有 ControlSet001和 ControlSet002這兩個,特殊情況下可能會有多個),CurrentControlSet保存的是系統的當前的一些配置信息,而ControlSet001等則是對當前配置信息的備份,一般注冊表都會有兩個以上的備份,有的時候可能會有更多。在ControlSetXXX中的信息和 CurrentControlSet中的信息一般都是一樣的,所以在檢測和刪除 USB存儲設備信息時,不僅要檢測 CurrentControlSet子鍵,也要檢測 ControlSetXXX子鍵。

對於 Enum\USB子鍵,其中存儲的是曾經連接到系統的 USB設備的一些信息,包括 USB鼠標、鍵盤、光驅、手機、移動硬盤、攝像頭、U盤等,所以並不是所有的信息都是 USB存儲設備信息,雖然把這些信息刪除並無大礙(因為刪除的只是這些設備的一些連接信息和相應的驅動信息,並不是刪除系統的實際驅動文件,所以系統會自動重新識別這些設備),但為了提高識別精確性,還是增加一些判斷來得好些。

而對於 Enum\USBSTOR子鍵來說,則相當於把 USB存儲設備的信息單獨分離出來了,該子鍵下存儲的信息都是曾經連接到計算機的 USB存儲設備的相關信息。這些信息詳細列出了該 USB存儲設備的類型、硬件 ID、設備描述、友好名稱等信息。

對於 Control\DeviceClasses來說,該子鍵下存儲的是以 GUID分類的設備信息,其中有幾個是和 USB設備有關的(它們在微軟的 USB和存儲設備輸入輸出控制頭文件USBIODEF.H和NTDDSTOR.H中定義):

{A5DCBF10-6530-11D2-901F-00C04FB951ED} GUID_DEVINTERFACE_USB_DEVICE

{3ABF6F2D-71C4-462A-8A92-1E6861E6AF27} GUID_DEVINTERFACE_USB_HOST_CONTROLLER

{F18A0E88-C30C-11D0-8815-00A0C906BED8} GUID_DEVINTERFACE_USB_HUB

{53F56307-B6BF-11D0-94F2-00A0C91EFB8B} GUID_DEVINTERFACE_DISK

一般檢查{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}和{A5DCBF10-6530-11D2-901F-00C04

FB951ED}這兩個鍵值,其他兩個由於是和 USB控制器有關,一般可不檢查。有的資料介紹說還要檢查 MountedDevices子鍵,但是由於該子鍵和系統的分區信息有關,一般無絕對的把握,不必進行檢查和刪除,到時可能會造成不必要的麻煩。

第二節 檢測 USB存儲設備使用痕跡

1、打開Visual Studio 2010,新建一個空白方案,命名為 USBView。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved