用vbscript實現修改屏幕保護的等待時間長度
2019-10-26 17:59:32
供稿:網友
問:
嗨,Scripting Guy!是否可以使用腳本來修改計算機上屏幕保護的等待時間長度?
-- JN
答:
嗨,JN。出于某些原因,Microsoft 的腳本技術在涉及 Windows 設置和組件方面有些不足,例如屏幕保護、墻紙、任務欄和開始菜單等等。您可以使用 WMI(尤其是 Win32_Desktop 類)來讀取這些值,但不能使用 Win32_Desktop 類(或是任何等價的類或對象)來修改這些值。為什么呢?老實說,我們也不知道;
幸好,這些值大都存儲在 Windows 注冊表中,而只要這些值存儲在注冊表中,您就可以編寫腳本來管理它們。屏幕保護程序也不例外。打開 Regedit,讓我們來看看 HKEY_CURRENT_USER 內部;在 Control Panel/Desktop 項中,您將會看到幾個與屏幕保護程序有關的注冊表值,包括 ScreenSaveTimeout。您可能猜到了,這就是確定屏幕保護等待的時間長度的注冊表值。默認情況下,這個值被設置為 600 秒,也就是 10 分鐘。
那么,如何更改這個值呢?通過使用如下的腳本可以將等待時間更改為 5 分鐘(300 秒):
HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
strKeyPath = "Control Panel/Desktop"
objReg.CreateKey HKEY_CURRENT_USER, strKeyPath
ValueName = "ScreenSaveTimeout"
strValue = "300"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue
為了達到這個目的,我們首先創建一個名為 HKEY_CURRENT_USER 的常量,并將它的值設置為 &H80000001;這告訴 WMI 的注冊表提供程序,我們正在處理注冊表的 HKEY_CURRENT_USER 部分。如果我們要處理 HKEY_LOCAL_MACHINE,那么我們就需要將常量設置為 &H80000001;將常量設置為 &H80000003 則可以處理 HKEY_USERS。
由于我們在本地計算機上執行這個腳本,因此我們將變量 strComputer 設置為點(在 WMI 中表示本地計算機的快捷方式)。注冊表提供程序的出色之處在于,它可以在遠程計算機上工作,并且性能和在本地計算機上一樣好。因此如果您希望更改遠程計算機上的屏幕保護等待時間,只需將 strComputer 的值設置為那臺計算機的名稱即可。
從此時開始,我們連接到 WMI 服務,并指定注冊表路徑 (Control Panel/Desktop)。接下來我們將調用 CreateKey 方法。這是為了保險起見。因為如果我們查找的注冊表項不存在,則 CreateKey 就會創建這個注冊表項。如果注冊表項已經存在,那么 CreateKey 將會保留這個注冊表項。