|
論壇說明 | 標記討論區已讀 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-10-31, 01:36 AM | #1 |
榮譽會員
|
限制一個帳號登入多台工作站
首先,先建立兩個指令碼文件..分別為LOGON.VBS,LOGOFF.VBS.
LOGON.VBS Option Explicit Dim oNet, sUser, sComputer, ServerLog ServerLog = "\\SERVERNAME\logctrl$\" 加$目的是為了用戶在遊覽伺服器共享文件的時候看不到.這樣用戶就無法來更改他們的登入信息.. Set oNet = CreateObject("Wscript.Network") sUser = oNet.UserName sComputer = oNet.ComputerName Set oNet = Nothing Dim fso, f1, WshShell, argu, alllog, lastlog Dim FileName FileName=ServerLog & sUser & ".txt" Set fso = CreateObject("Scripting.FileSystemObject") If Not (fso.FileExists(FileName)) Then Set f1 = fso.CreateTextFile(FileName,True) f1.WriteLine sUser & " " & sComputer f1.Close Set WshShell = Wscript.CreateObject("Wscript.Shell") argu = FileName & "/T/E/G" & sUser & ":f /R Everyone" WshShell.run("cacls " & argu) Set WshShell = Nothing End If Set f1 = fso.OpenTextFile(FileName, 1, True) alllog = f1.readall f1.Close Set f1 = fso.OpenTextFile(FileName, 1, True) lastlog = f1.readline f1.Close If Left(lastlog, 5) = "logon" Then '判斷是否登入 If InStr(lastlog,sComputer) < 1 Then '判斷是否同一台機器,如果不是,往下執行 Set f1 = fso.OpenTextFile(FileName, 2, True) f1.WriteLine (lastlog & Chr(13) & Chr(10) & "fail-so-logoff:" & Now() & " " & sUser & " at " & scomputer & Chr(13) & Chr(10) & alllog) f1.Close Set WshShell = Wscript.CreateObject("Wscript.Shell") Dim i,OldComputer i=InStr(lastlog,"at") OldComputer=Right(lastlog,Len(lastlog)-i-2) WshShell.popup "對不起:此帳號已經在 " & OldComputer & " 上登入使用!出現此提示,如是你還沒有登入,說明你的帳號被盜,請及時上報技術部,謝謝合作!!!" , 30 Set WshShell = Nothing Dim os, retcode For Each os In GetObject("Winmgmts:{impersonationLevel=impersonate,(shutdown,remoteshutdown)}!//" + sComputer).InstancesOf("Win32_OperatingSystem") retcode = os.Win32ShutDown(4, 0) Next Wscript.quit Else Set f1 = fso.OpenTextFile(FileName, 2, True) f1.WriteLine ("logon: " & Now() & " " & sUser & " at " & sComputer & Chr(13) & Chr(10) & alllog) f1.Close End If Else '沒有登入 Set f1 = fso.OpenTextFile(FileName, 2, True) f1.WriteLine ("logon: " & Now() & " " & sUser & " at " & sComputer & Chr(13) & Chr(10) & alllog) f1.Close End If Set f1 = Nothing Set fso = Nothing Wscript.quit LOGOFF.VBS option explicit dim oNet,sUser,sComputer,ServerLog ServerLog = "\\SERVERNAME\logctrl$\" set oNet=createobject("Wscript.Network") sUser=oNet.UserName sComputer=oNet.ComputerName set oNet=nothing dim fso,f1,alllog,lastlog Dim FileName FileName=ServerLog & sUser & ".txt" set fso=createobject("Scripting.filesystemobject") set f1=fso.opentextfile(FileName,1,true) lastlog=f1.readline f1.close set f1=fso.opentextfile(FileName,1,true) alllog=f1.readall f1.close if left(lastlog,5)="logon" Then If InStr(lastlog,sComputer) > 0 Then '判斷是否同一台機器,如果是,往下執行 Set f1=fso.opentextfile(FileName,2,true) f1.writeline("logoff: " & Now() & " " & suser & " at " & scomputer & Chr(13) & chr(10) & alllog) f1.close End If end if set f1=nothing set fso=nothing wscript.quit 我最初對蔣世濱先生寫那遍文章感興趣,試完之後覺得有存在一些問題,所以進行適當的修改.我在2000 ADVANCED SERVER測試通過. 如大家在測試程序中出現的問題,可以進行深入探討. |
送花文章: 3,
|