既然系统提供的功能不足以完成任务,何不通过编程来实现呢?初步的设想是用VB定制登录时间控制程序,然后修改注册表项,让程序在计算机启动或用户登录时自动加载。需要指出的是,必须限制Game和Study用户对系统时间的修改,为此还要对SetupBIOS加口令保护,有条件的话最好锁上主机箱。
首先,VB程序的设计:新建工程,调整窗口的大小到合适,在窗口中添加一个label控件(设置caption属性为“你的登录时间已用完,1分钟以后注销,请及时保存数据!”)和二个timer控件(mainTimer和fairyTimer),程序代码如下:
OptionExplicit
ConstEWX_LOGOFF=0
ConstEWX_SHUTDOWN=1
ConstEWX_REBOOT=2
ConstEWX_FORCE=4
PRivateDeclareFunctionGetUserNameLib"advapi32.dll"Alias"GetUserNameA"(ByVallpBufferAsString,nSizeAsLong)AsLong
PrivateDeclareFunctionExitWindowsExLib"user32"(ByValuFlagsAsLong,ByValdwReservedAsLong)AsLong
PrivateSubfairyTimer_Timer()
Dimmyweekday,mydate
Dimmytime,hh$,mm$,ss$
mydate=Date
myweekday=Weekday(mydate)
mytime=Time
hh$=Left$(mytime,2)
mm$=Mid$(mytime,4,2)
Ifmyweekday>1Andmyweekday<7Then
'周一至周五登录规则
Ifhh>18Andhh<19Then
ExitSub
Else
EndIf
Else
'双休日登录规则
Ifhh>13Andhh<15Then
ExitSub
ElseIfhh>18Andhh<20Then
ExitSub
Else
EndIf
EndIf
mainForm.Visible=True
mainTimer.Interval=60000'启动注销进程
EndSub
PrivateSubForm_Load()
Dims$,cnt&,dl&
cnt&=199
s$=String$(200,0)
dl&=GetUserName(s$,cnt)
'Debug.PrintLeft$(s$,cnt-1);cnt
IfLeft$(s$,cnt-1)="ChenHL"Then
fairyTimer.Interval=6000'启动监听精灵
Else
mainTimer.Interval=0
EndIf
EndSub
PrivateSubForm_Unload(CancelAsInteger)
Dimret&
ret&=ExitWindowsEx(EWX_FORCEOrEWX_LOGOFF,0)
EndSub
PrivateSubmainTimer_Timer()
Dimret&
ret&=ExitWindowsEx(EWX_FORCEOrEWX_LOGOFF,0)
EndSub
新闻热点
疑难解答