VB.NET打造个性化安全防护软件
敬业的IT人
互联网
佚名
2008-5-21 12:40:12
曾经的VB虽说在做应用软件方面已经完全够用了。但是如果做一些技术含量较高的软件就显得有些力不从心,VB程序员们一直期盼着在未来的版本中VB可以胜任任何的软件开发工作。现在可以了,在微软新推出的开发系统VB.NET中,VB程序员可以轻松开发出高难度的曾经是可望而不可及的程序。
我这里介绍的是一个文件、进程监视系统,主要运用于Web服务网站,大家都知道网站被黑往往是令每个网管都棘手的问题。现如今各式各样的漏洞、攻击器满天飞,如果补丁装的稍有迟疑往往难逃网页文件被删改的厄运。即使尽职尽责的时刻关注补丁升级。但试问一下是先有漏洞还是先有的补丁。
这个程序运用VB.NET的FileSystemWatcher对象,为了增强交互式采用MS Agent控件作为交互界面。
首先新建一个标准的Windows程序,从组件中选择FileSystemWatcher
FileSystemWatchertiy有多种构造器。
''无参数的构造器
fswMy = new FileSystemWatcher("c:\")
''Path属性作为参数的构造器
fswMy = new FileSystemWatcher("c:\")
''Path属性和Fileter属性作为参数的构造器
fswMy = new FileSystemWatcher("c:\","*.txt")
主要属性有:
Path 需要监控的目录的路径
EnableRaisingEvents 启动或停止FileSystemWatcher组件
Filter 过滤字符串,用来确定目录中那些文件是需要监控的
IncludeSubdirectories 子目录是否也需要监控
InternalBufferSize 内部缓冲区大小
NotifyFilter 需要监控哪些类型的变化,其中NotifyFilter枚举类型的成员
Attributes 文件或文件夹的属性
CreationTime 文件或文件夹生成时间
DirectoryName 目录名
FileName 文件名
LastAccess 文件或文件夹最后一次打开的事件
LastWrites 文件或文件夹最后一次写入的事件
Seurity 文件或文件夹的安全设置(必须在NTFS分区的情况下)
Size 文件或文件夹的大小
所用到的事件
Changed 改变
Created 建立
Deleted 删除
Renamed 改名
事件所生成的属性
e.ChangeType.ToString 改变类型
e.FullPath.ToString 改变后的文件名
e.OldName.ToString 源文件名
FileSystemWatcher 监控大概需要的基本知识就这些。
现在我们说一下对于配置文件的读取我们不可能要求用户每回都设置一遍配置。我采用的方法是用XML数据文件,XML数据文件分为XML文件和XSD文件,XSD是对XML文件结构的描述。
XSD配置文件内容如下:
<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="SPYFileSet">
<xs:complexType>
<xs:sequence>
<xs:element name="Directory" type="xs:string" minOccurs="0" />
<xs:element name="FileName" type="xs:string" minOccurs="0" />
<xs:element name="Sub" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
基本的XML内容如下
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<SPYFileSet>
<Directory>c:\</Directory>
<FileName>*.*</FileName>
<Sub>true</Sub>
</SPYFileSet>
</NewDataSet>
对于XML数据文件的读取,其实很简单。
Dim ds as DataSet=New DataSet()
Try
ds.ReadXmlSchema("FileSet.xsd")
ds.ReadXml("FileSet.xml")
Catch
''读取失败
End Try
读取数据的方法是
Dim table as DataTable
Dim row as DataRow
table=ds.Tables.Item(0)
For rowIndex=0 To table.Rows.Count-1
row=table.Rows.Item(I)
messagebox.show row("Directory") & row("FileName") & row("Sub") next
添加一个监控目录
row=table.NewRow()
row("Directory")="d:\"
row("FileName")="*.*"
row("Sub")=True
table.rows.add(row)
删除一个监控的目录
确定被选的纪录然后
row.Delete
存储时用ds.WriteXml("FileSet.xml"),因为数据结构没有改变所以FileSet.xsd没有必要重写。到这里你可能会发现一个问题,就是一个FileSystemWatcher对象如何实现对多个目录的监控,一个FileSystemWatcher对象是无法监管多个目录的,只能采用控件数组。
''定义控件数组
Public FileSystemWatche32() As System.IO.FileSystemWatcher
''使用控件数组
''重新定义数组数量
Redim Preserve fswMain(Max)
''设置对象属性
for I=0 to Max
fswMain(I) = New FileSystemWatcher
''添加控件
me.Controls.Add(fswMain(I))
''设置属性
fswMain(I).Path="C:\"
''设置对象托管
AddHandler FileSystemWatche32(0).Changed, AddressOf FileSystemWatcher1_Changed next I
在FileSystemWatcher1_Changed事件中添加对其的处理
Dim lb As System.IO.FileSystemWatcher = CType(sender, System.IO.FileSystemWatcher) Messagebox.Show e.ChangeType.ToString
控件数组的使用方法就是这样,你可以根据上面的方法,增加其他事件的方法。基本上你可以结合上面的方法完成属于你自己的文件监控系统。为了增强交互性我们要引入微软的MS Agent控件。使用方法是工具箱上任意位置点击右键,选择自定义工具箱,选择COM控件中的"MicrosoftAgentControl2.0"点击确定后会把控件加入到工具箱中。
使用MS Agent的方法是:
Private Peedy as IAgentCtlcharacterEx
''读取动画人物图像
AgentCtl.Characters.Load("char1","1.acs")
Peedy=AgentCtl.Characters("Char1")
Peedy.LanguageID=0x0409
Peedy.Show(false)
这样就显示出了动画人物,动画人物可以设置多种表情动作,方法是
Peedy.Play("动作名")
动画人物支持很多动作,像点头Acknowledge向左看LookLeftReturn等等可以去 http://agent.microsoft.com/agent2/sdk/samples/html/charview.htm观看。
还有就是他还可以说话方法是:
Peedy.Speak("Hello")
这样可以做到人机交互了。
- 最新文章
- 在VB.NET中如何确定两个日期之间的天数[05-21]
- VB.NET结构化异常处理基础[05-21]
- 将你的Visual Basic 6.0移植到Visual B..[05-21]
- VB自动登陆网络站点详解(三):Internet Explo..[05-21]
- 使用VB.NET扫描系统服务[05-21]
- Visual Basic 和 Visual C# 概念--抽..[05-21]
- 相关文章
- 在VB.NET中如何确定两个日期之间的天数[05-21]
- VB.NET结构化异常处理基础[05-21]
- 使用VB.NET扫描系统服务[05-21]
- VB.NET中多窗体同步的解决方案[05-21]
- VB.Net中文教程(8) 对象(Object)基本概念[05-21]
- 走近VB.Net(五) VB.Net核心概念[05-21]
