Share via


嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:要如何在工作站無活動達五分鐘後,將工作站鎖定?


要如何在工作站無活動達五分鐘後,將工作站鎖定?

嗨,Scripting Guy!要如何在工作站無活動達五分鐘後,將工作站鎖定?

-- NM

NM,您好。說實話,我們也不知道。遠端鎖定電腦可能有點麻煩,您瞧瞧一年前我們寫的其中一個專欄就知道了。而且要判斷電腦是不是閒置又是另一個問題。因為沒有辦法監督按鍵輸入或滑鼠按下的動作,能想到的最好方法應該是檢查 CPU 的使用率,判斷電腦是否閒置。這樣或許可行,但是您就必須持續監督電腦,並時時判斷電腦到底是不是閒置中。一定有更好的方式!

就是這樣:電腦其實可以自行監督並在閒置五分鐘後自行鎖定,您只要在螢幕保護程式添加密碼保護,把保護程式的逾時值設定為 5 分鐘就得了。如果電腦持續限制達 5 分鐘,螢幕保護程式就會開始運作並鎖定電腦,就像稽核人員建議的一樣。

更棒的是,您可以透過指令碼直接修改登錄,替所有的電腦設定適當的螢幕保護程式。舉個例子,這個指令碼可以啟用螢幕保護程式的密碼保護:

HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Control Panel\Desktop"
ValueName = "ScreenSaverIsSecure"
strValue = "1"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

這個指令碼先定義一個名為 HKEY_CURRENT_USER 的常數,將該值設為 &H80000001,以便告知指令碼要我們要使用哪一個登錄 Hive。接著利用這行指令碼就連接到 WMI 服務和標準登錄提供者 (StdRegProv) 類別:

Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

接著指定三個變數的值:

  • strKeyPath:代表 HKEY_CURRENT_USER 內的路徑,可連至需要變更的登錄機碼。螢幕保護程式的路徑就是 Control Panel\Desktop。
  • ValueName:要變更的登錄值。要變更 ScreenSaverIsSecure 的值才能啟用密碼保護。
  • strValue:要指派給 ScreenSaverIsSecure 的新值。將 ScreenSaverIsSecure 設定為 1 啟用密碼保護,設定為 0 則停用。

只需要呼叫 Open 方法並傳給它定義的參數:

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

這樣就可以了。下回使用者登入時,螢幕保護程式會有密碼保護。

 

附註:沒錯,登錄雖然立即更改,但是變更只有在下次使用者登入時才會生效。因此您可能需要把這個程式加在登入指令碼內,在使用者登入前先行設定登錄。您也可以進行變更並強迫使用者登出,如需將使用者登出腦的資訊,請按一下《Microsoft Windows 2000 Scripting Guide》(英文) 。


當然啦,將使用者登出前您得將螢幕保護程式的逾期值改為 5 分鐘。指令碼是這樣寫的:

HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objReg = GetObject("winmgmts:\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "Control Panel\Desktop" ValueName = "ScreenSaveTimeout" strValue = "300"

objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue

沒錯,這和剛才看過的指令碼很像,兩段指令碼只有兩個不同之處:

  • 這次要改的登錄值是 ScreenSaveTimeout (還是在 Control Panel\Desktop key 裡面)。
  • 指定給 ScreenSaveTimeout 的新值是 300,因為螢幕保護程式逾時是以秒計。300 秒就等於 5 分鐘 (300 除以 60 等於 5)。如果稽核人員建議的逾時值是三分鐘,那麼把 ScreenSaveTimeout 設定為 180 (60 秒乘以 3) 就可以了。

討論到此結束。您的電腦在閒置五分鐘後會鎖定,不需要撰寫任何複雜的監督/遠端鎖定指令碼。

既然您也問了,Scripting Guy 很慶幸就算五分鐘 (甚至五小時) 閒閒沒事做也不會被鎖在外頭。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首