c# u盘使用记录_用 C# 编写 USB 存储设备使用痕迹检测和删除工具

编写 USB 存储设备使用痕迹检测和删除工具

(C# Windows Form 编程练习)

[版权所有 邱秋 2014 metaphysis@yeah.net, 转载请注明出处]

第一节 准备知识

之前一直都是用 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-00C04FB951ED} 这两个键值,其他两个由于是和 USB 控制器有关,一般可不检查。有的资料介绍说还要检查 MountedDevices 子键,但是由于该子键和系统的分区信息有关,一般无绝对的把握,不必进行检查和删除,到时可能会造成不必要的麻烦。

第二节 检测 USB 存储设备使用痕迹

1、打开 Visual Studio 2010,新建一个空白方案,命名为 USBView。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值