首页 > 范文大全 > 正文

U盘实时监控系统的研究与开发

开篇:润墨网以专业的文秘视角,为您筛选了一篇U盘实时监控系统的研究与开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:该文主要介绍如何用VB实现U盘实时监控系统,并给出了实现的关键代码。

关键词:VB;U盘;实时监控

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)11-2782-01

Design and Application of Realization of USB Disk Real-time Monitoring

BAI Xue1, ZHAO Lei2

(1. Department of Computer Aviation University of Air Force, Changchun 130022, China; 2. Basic Training Base, Aviation University of Air Force, Changchun 130022, China)

Abstract: This paper presents how to realize USB disk real-time monitoring by use of VB language. The realization key codes are also given.

Key words: VB;USB Disk;Real-time Monitoring

信息安全的问题是现代信息社会中一个非常重要的问题,为了防止失泄密问题的发生,禁止使用U盘是其中一种行之有效的做法。但有时为了工作的需要,难免要使用U盘,虽然有不少方法可以通过相应的设置禁止USB口的使用,但有时又需要重新开放USB口的使用。如果通过程序对USB口进行实时监控,只要有人在USB口插入U盘后就马上报警,同样能够达到一定的保护作用。本文主要介绍了在VB中使用SysInfo控件对U盘进行实时监控,最后给出了实现的关键代码。

1 基本原理

SysInfo控件可以检测操作系统提供的信息,同时对操作系统产生的事件作出反应。使用SysInfo 控件的DeviceArrival和DeviceRemove Complete事件可以对加载驱动器、卸载驱动器的事件作出响应,通过该控件的这两个事件可以判断是否有存储器插拔。在本例中,使用了SysInfo控件的DeviceArrival事件,该事件当系统中添加新设备时产生。事件有四个参数,其中DeviceType指示已添加设备的类型,等于2表示添加了新的磁盘;deviceID参数识别设备的值,通过它可以转换得到新磁盘的盘符,其值等于2的n次方,n即为盘符(对应字母顺序A盘为0、B盘为1…)。得到新磁盘的盘符后还要判断其是否为U盘,这需要使用API函数GetDriveType。该函数的功能是判断一个磁盘驱动器的类型,其返回值2表示可移动磁盘。一旦发现新添加的是U盘,利用API函数NetMessageBufferSend给局域内指定为监控服务器的接收端计算机发送报警信息。使用这一函数的时候需要知道本机的计算机名,这通过调用API函数GetComputerName来实现[1]。

2 具体实现

启动VB新建一个窗体,在该窗体上添加一个SysInfo控件,并将其命名为SysInfo1。在窗体中主要代码如下:

Dim ToName() As Byte'信息接收端计算机

Dim FromName() As Byte'信息发送端计算机

Dim Msg() As Byte'发送的信息

cmprName = String(255, 0)

GetComputerName cmprName, 256'获取本机的计算机名

ToName = "172.16.100.200" & vbNullChar '设定信息接收端计算机地址

FromName = cmprName

If DeviceType = 2 Then'2 表示添加新设备是磁盘驱动器

If GetDriveType(GetDriveLetter(deviceID) & ":") = 2 Then'2 表示可移动磁盘

Msg = cmprName & vbNullChar & " 有可移动磁盘插入" & vbNullChar

End If

ret = NetMessageBufferSend(ByVal 0&, ToName(0),ByVal 0&, Msg(0), UBound(Msg))'向接收端计算机发送信息

If ret False Then End'信息发送失败则结束本程序

End If

End Sub

Private Function GetDriveLetter (deviceID As Long) As String

Dim i As Integer

For i = 0 To 25

If deviceID = 2 ^ i Then

GetDriveLetter = Chr (Asc ("A") + i)'返回盘符

Exit Function

End If

Next

End Function

3 结束语

以上程序在Windows XP+Visual Basic6.0下调试通过,执行后其主窗体自动隐藏,而且也不会在任务管理器中显示。实践证明,该文所介绍的方法简单有效、实用可行。

参考文献:

[1]明日科技.Visual Basic 开发经验技巧宝典[M].北京:人民邮电出版社,2007.