转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
用VB实现Win2000用户限时登录         ★★★★

用VB实现Win2000用户限时登录

作者:闵涛 文章来源:闵涛的学习笔记 点击数:645 更新时间:2009/4/23 15:03:00
  作为信息社会的一分子,不让孩子接触电脑是不明智的;让孩子无限制的“玩”电脑也是错误的。这都是极端的作法。笔者认为,比较合理的办法是允许孩子在限定的时间段里游戏(受控制的),但孩子随时可以打开电脑学习技术文化知识(不受控制的)。下面来看看我是如何实现这一设想的:

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

  既然系统提供的功能不足以完成任务,何不通过编程来实现呢?初步的设想是用VB定制登录时间控制程序,然后修改注册表项,让程序在计算机启动或用户登录时自动加载。需要指出的是,必须限制Game和Study用户对系统时间的修改,为此还要对Setup BIOS加口令保护,有条件的话最好锁上主机箱。

  首先,VB程序的设计:新建工程,调整窗口的大小到合适,在窗口中添加一个label控件(设置caption属性为“你的登录时间已用完,1分钟以后注销,请及时保存数据!”)和二个timer控件(mainTimer和fairyTimer),程序代码如下:

Option Explicit

Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Private Sub fairyTimer_Timer()
  Dim myweekday, mydate
  Dim mytime, hh$, mm$, ss$
  mydate = Date
  myweekday = Weekday(mydate)
  mytime = Time
  hh$ = Left$(mytime, 2)
  mm$ = Mid$(mytime, 4, 2)
  If myweekday > 1 And myweekday < 7 Then
  '周一至周五登录规则
    If hh > 18 And hh < 19 Then
      Exit Sub
    Else
    End If
  Else
  '双休日登录规则
    If hh > 13 And hh < 15 Then
      Exit Sub
    ElseIf hh > 18 And hh < 20 Then
      Exit Sub
    Else
    End If
  End If
  mainForm.Visible = True
  mainTimer.Interval = 60000 '启动注销进程
  End Sub

Private Sub Form_Load()
  Dim s$, cnt&, dl&
  cnt& = 199
  s$ = String$(200, 0)
  dl& = GetUserName(s$, cnt)
  'Debug.Print Left$(s$, cnt - 1); cnt
  If Left$(s$, cnt - 1) = "ChenHL" Then
    fairyTimer.Interval = 6000 '启动监听精灵
  Else
    mainTimer.Interval = 0
  End If
  End Sub

Private Sub Form_Unload(Cancel As Integer)
  Dim ret&
  ret& = ExitWindowsEx(EWX_FORCE Or EWX_LOGOFF, 0)
End Sub

Private Sub mainTimer_Timer()
  Dim ret&
  ret& = ExitWindowsEx(EWX_FORCE Or EWX_LOGOFF, 0)
End Sub
  完成工程以后,编译成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),最后点“下一步”完成。




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

  说明:以上程序在Windows 2000、VB 6.0下编译通过。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台