躲开 CIH

    上个月的今天,我系计算机房提前用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)

(上一页)---(下一页)