• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用VB實現Win2000用戶限時登錄

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 27次 | 進入軟件測試論壇討論

    領測軟件測試網  作為信息社會的一分子,不讓孩子接觸電腦是不明智的;讓孩子無限制的“玩”電腦也是錯誤的。這都是極端的作法。筆者認為,比較合理的辦法是允許孩子在限定的時間段里游戲(受控制的),但孩子隨時可以打開電腦學習技術文化知識(不受控制的)。下面來看看我是如何實現這一設想的:

      剛開始的時候,我把系統改成可管理性較強的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下編譯通過。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>