欢迎光临
我们一直在努力

用vb实现win2000用户限时登录_visualbasic教程

建站超值云服务器,限时71元/月

刚开始的时候,我把系统改成可管理性较强的Windows2000(文件系统必须采用NTFS格式),建立两个同属User组的受限制帐户Game(用于游戏)和Study(学习帐户)并为他们设置相应文件、文件夹的安全权限,然后利用系统管理工具中“本地安全策略”(开启“当登录时间用完时自动注销用户”)结合netuser命令来限制特定游戏帐号(如Game)的登录时间,不过并不奏效:能控制登录,但登录以后却不能实现自动强制退出。

  既然系统提供的功能不足以完成任务,何不通过编程来实现呢?初步的设想是用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

  完成工程以后,编译成doonus.exe可执行文件,并把doonus.exe文件保存到系统的SystemRoot\system32目录中,设置相应的安全权限,使之除管理员之外的其他用户为只读。

  接着,修改注册表:在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下新建字串值doonus,使其数值数据为SystemRoot\system32\doonus.exe,保存后退出。

  重启电脑以后,发现此方法有二个很严重的缺陷:一是windows任务管理器的“应用程序”里能看到正在运行的doonus.exe程序(这是暴露目标,泄底!);二是尽管不能在“应用程序”里结束任务doonus(因为结束doonus任务意味着自动注销,这是程序设定的),但可以在“进程”中结束doonus进程(这是致命的漏洞!)。

  山穷水复疑无路,柳暗花明又一村。突然想到了windows中的“任务计划”,为什么不试试呢?

  双击“控制面板”的“任务计划”,在任务计划窗口中双击“添加任务计划”,在接着打开的窗口中点“下一步”,在接下来的窗口中选择SystemRoot\system32目录下的doonus.exe,接着输入任务名称(如doonus)并点选“计算机启动时”或“登录时”(如图1),点“下一步”并在接下来的窗口中输入用户名“abc\administrator”(我想你不会连这也照抄吧?)、密码和确认密码(如图2),最后点“下一步”完成。  

  终于完成了,重启一下,看看效果怎样?

  说明:以上程序在Windows2000、VB6.0下编译通过。->

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用vb实现win2000用户限时登录_visualbasic教程
分享到: 更多 (0)