上个月的今天,我系计算机房提前用KV300和瑞星杀毒软件做了彻底清理,并在4月25日将系统日期全部改为4月27日,在4月27日又将日期改回,从而避开了CIH的发作时间。然而,CIH的变种发作时间是每个月的26日。这样每个月提前修改系统日期不是一件轻松的事。而且,由于公用计算机人多手杂,系统日期可能经常被人修改,与真正的日期差之千里。一旦疏于防范,就可能功亏一篑。那么,能不能使计算机自动修改系统日期而不用操心呢?下面就为您提供了这样一个VB小程序,运用它,您就可以高枕无忧了。因为CIH病毒一般只感染Win
95和Win 98系统,所以这里只提供了运行于Win 95/Win 98系统的程序。
这个程序需要在一个名为FORM1的窗体中增加如下控件:(1)计时控件TIMER1,将其Enabled属性由true改为false,Interval属性值为50(1000是一秒,您可以自行调整此值,注意不能为0);(2)文本框Text2,其visible属性值为false,使其在程序进行时不可见。另外,为了使界面更美观,您可以通过Form1的picture属性指定程序所用的图片。您还可以通过form1的Icon属性指定所用的程序图标。(如图)
具体程序代码及解释如下:
Private Sub Form_Load()
Open "new" For Input As #1
Dim cline As String
Do While Not EOF(1)
Line Input #1, cline
Loop
Close #1
If cline = "new" Then
Open "new" For Output As #1 '如果“new”文件内容为“new”,则说明此程序为第一次运行,需将其快捷方式拷贝到程序"启动"组。
Print #1, "old"
Close #1
Open "St5unst.log" For Input
As #1
Dim cline2 As String
I = 0
Do While Not EOF(1) And I < 10
Line Input #1, cline2
Text2.Text = cline2
I = I + 1
Loop
Close #1
File Copy Mid(Text2.Text, InStr(Text2.Text,
":\") - 1, InStr(Text2.Text, "setup")
- (InStr(Text2.Text, ":\")
- 1)) + "Start Menu\Programs\timekeep.lnk", Mid(Text2.Text,
InStr(Text2.Text, ":\") - 1,
InStr(Text2.Text, "setup") - (InStr(Text2.Text,
":\") - 1)) + "Start Menu\Programs\启动\timekeep.lnk"End
If
以上部分的目的是将程序快捷方式拷贝到程序"启动"组。其中的“St5unst.log”是安装本程序生成的安装日志文件,其中记载了Windows所在的路径。“new”文件是需要您自己建立的一个文本文件,其内容必须是“new”。此文件和下面提到的“datekey”(也是您自己建立的文本文件,内容必须是“true”。),都要在用VB5.0的“应用程序安装向导”创建安装盘时,随其他文件一同添加发布的。这样在您安装后,本程序所在的文件夹中才有这两个初始文件。
Dim MyDate1, Myday1
MyDate1 = Date '获取当前日期(包含年月日)。
Myday1 = Day(MyDate1)'获取当前日期(仅包含日)。
'Label1.Caption = Myday
Open "datekey" For Input As #1
'打开文件确认日期的真假。
Dim cline3 As String
Do While Not EOF(1)
Line Input #1, cline3
Loop
Close #1
If cline3 = "false" And Myday1
<> 28 Then
Date = Date - 2
'如果当前日期为假,则减2。但如果当前日期为28日,则不能改回,否则出现26日。
Open "datekey" For Output As
#1 '以下三条目的在于记录修改日期事件。
Print #1, "true"
Close #1
End If
'以上部分的目的是将原已修改的假日期改为真日期。同时在“datekey”文件中记录修改日期事件。注意:28日不能改回,否则出现26日。但可以在今后开机时,比如29日,自动改为真日期。
Dim MyDate2, Myday2
MyDate2 = Date '获取已修改过的当前日期(包含年月日)。
Myday2 = Day(MyDate2) '获取已修改过的当前日期(仅包含日)。
If Myday2 = "25" Then
Open "datekey" For Output As
#1 '以下三条目的在于记录修改日期事件。
Print #1, "false"
Close #1
Date = Date + 2 '如果当前日期为25日,则加2。改变系统日期。
End If
If Myday2 = "26" Then
Open "datekey" For Output As
#1 '以下三条目的在于记录修改日期事件。
Print #1, "false"
Close #1
Date = Date + 2 '如果当前日期为26日,则加2。改变系统日期。
End If
'以上部分的目的是一旦系统日期为25日则需改为27日,一旦系统日期为26日则需改为28日,以避免出现26日。同时在“datekey”文件中记录修改系统时间事件。
Timer1.Enabled = True '使计时器生效,以退出本程序。
End Sub
Private Sub Timer1_Timer()
End
End Sub
将此工程保存为“timekeep.vbp”,并生成“timekeep.exe”,最后,用VB5.0的“应用程序安装向导”创建安装盘,安装之后即可以在程序组中找到这个程序,点击程序图标执行后,即将其添加到启动组。今后,您就可以让计算机为您管理系统日期,从而避开CIH病毒及其变种的侵害。(本程序用VB5.0开发,在Win
95/Win 98上调试成功。)
(中国人民大学行政管理学系 李传军 100872)