该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章.

前面已经讲述了如何清除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使用记录(一)相关推荐

  1. C# 系统应用之通过注册表获取USB使用记录(一)

    该文章是"个人电脑历史记录清除软件"项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录.获取Windows最近访问文件记录.清除回收站等功能.现在我需要完成的是删 ...

  2. 注册表故障恢复 必须使用记录或另一备份以恢复包含系统注册表数据的文件。恢复成功...

    刚装好的XP,陆续装了一些软件之后,重启一进入系统就弹出: 注册表故障恢复        必须使用记录或另一备份以恢复包含系统注册表数据的文件.恢复成功 google + baidu 好像都没有合理解 ...

  3. 针对WM6.5系统和软件的注册表修改以及优化

    针对WM6.5系统和软件的注册表修改以及优化 2011年04月12日 手机上修改Windows?Phone注册表的软件(如果手机上已经有注册表修改软件就没必要下载了): 以下针对系统 手机上使用注册表 ...

  4. WM6.5系统和软件的注册表修改以及优化

    WM6.5系统和软件的注册表修改以及优化 手机上使用注册表编辑器修改一下键值: 注册表解锁: HKEY_LOCAL_MACHINE\Security\Policies\Policies 0000100 ...

  5. 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表

    原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表 我们知道目标平台是32位的程序运行在64位的系统上,去访问部分注册表的时候系统自动重定向到win32node节点对应的 ...

  6. 通过Windows注册表获取U盘、移动硬盘和USB读卡器等设备的PID、VID和序列号

    通过Windows注册表获取U盘.移动硬盘和USB读卡器等设备的PID.VID和序列号 http://blog.csdn.net/trustbo/article/details/50057463 LP ...

  7. 注册表禁用U盘、注册表屏蔽USB端口的方法

    启用U盘写保护操作的注册表方法: 1.运行REGEDIT, 2.展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet, 3.右击Control项,选择新建,重命名 ...

  8. WinForm创建系统托盘以及操作注册表

    创建系统托盘菜单 1,创建一个contextMenu(cmnMain)菜单 2,添加一个NotifyIcon组件,设置ContextMenu属性为cmnMain 3,相应窗体改变事件(最小化等) pr ...

  9. 注册表获取系统驱动版本信息

    注册表操作总结 MSDN设备GUID定义: 系统定义的设备设置类保留供系统使用 系统定义的设备设置类可供供应商使用 一.根据实际查询(子键可能随时变动) Intel VGA 4d36e968-e325 ...

最新文章

  1. java查询数据库以后的对齐问题
  2. Mips KVM TrapEmulate implemented in Linux
  3. 古诗文网页版html,古诗文网古诗文经典传承
  4. 去除Android开发文档中的URL,加速你的Android开发文档
  5. 转发和重定向和request域对象
  6. oracle修改asm参数文件,学习笔记:Oracle RAC参数文件管理 修改创建asm中的spfile文件...
  7. //rest风格写_REST /使用提要发布事件
  8. 基于海量日志和时序数据的质量建设最佳实践
  9. 面试基础算法及编程 第三弹(树(二叉树)相关:主要考察指针相关的操作)
  10. 大数据之_Hadoop工作笔记001---Hadoop3.1.2在Centos7上安装_单机版
  11. Word VBA:MathType公式与Latex公式切换
  12. 2015到3020计算机参考文献,同等学力相关论文范文素材,与计算机网络参考文献2016年相关硕士毕业论文...
  13. 十大免费网络工具 瞬间提升业务效率
  14. android 裁剪屏幕中特定区域内的内容
  15. Invalid Host/Origin header vue项目
  16. 启明云端分享|盘点ESP8684开发板有哪些功能
  17. 怎样用计算机传输文件,两台电脑之间互相传文件的方法步骤
  18. 读书札记--《金庸评传》
  19. bilinear interpolation是什么
  20. 如何用SSH连接华为云

热门文章

  1. 集群搭建:CentOS 7 模板机封装、配置静态 IP、简单优化
  2. Win10 64位 汇编环境的搭建: 安装配置 DOSBOX、MASM
  3. Hadoop2异常分析(二):Sqoop导出数据错误
  4. 科普: 中间件底层实现的分布式协议之Raft
  5. MySQL(五)汇总和分组数据
  6. 蓝桥练习-算法训练 最大最小公倍数
  7. Leecode 260. 只出现一次的数字 III——Leecode每日一题系列
  8. Leecode07. 整数反转——Leecode大厂热题100道系列
  9. 4行代码满分:L1-052 2018我们要赢 (5分)
  10. 22行代码AC,三种解法——例题3-6_环状序列(UVa-1584)