用vbscript實(shí)現(xiàn)修改屏幕保護(hù)的等待時(shí)間長(zhǎng)度
更新時(shí)間:2007年04月06日 00:00:00 作者:
問(wèn):
嗨,Scripting Guy!是否可以使用腳本來(lái)修改計(jì)算機(jī)上屏幕保護(hù)的等待時(shí)間長(zhǎng)度?
-- JN
答:
嗨,JN。出于某些原因,Microsoft 的腳本技術(shù)在涉及 Windows 設(shè)置和組件方面有些不足,例如屏幕保護(hù)、墻紙、任務(wù)欄和開始菜單等等。您可以使用 WMI(尤其是 Win32_Desktop 類)來(lái)讀取這些值,但不能使用 Win32_Desktop 類(或是任何等價(jià)的類或?qū)ο螅﹣?lái)修改這些值。為什么呢?老實(shí)說(shuō),我們也不知道;
幸好,這些值大都存儲(chǔ)在 Windows 注冊(cè)表中,而只要這些值存儲(chǔ)在注冊(cè)表中,您就可以編寫腳本來(lái)管理它們。屏幕保護(hù)程序也不例外。打開 Regedit,讓我們來(lái)看看 HKEY_CURRENT_USER 內(nèi)部;在 Control Panel\Desktop 項(xiàng)中,您將會(huì)看到幾個(gè)與屏幕保護(hù)程序有關(guān)的注冊(cè)表值,包括 ScreenSaveTimeout。您可能猜到了,這就是確定屏幕保護(hù)等待的時(shí)間長(zhǎng)度的注冊(cè)表值。默認(rèn)情況下,這個(gè)值被設(shè)置為 600 秒,也就是 10 分鐘。
那么,如何更改這個(gè)值呢?通過(guò)使用如下的腳本可以將等待時(shí)間更改為 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
為了達(dá)到這個(gè)目的,我們首先創(chuàng)建一個(gè)名為 HKEY_CURRENT_USER 的常量,并將它的值設(shè)置為 &H80000001;這告訴 WMI 的注冊(cè)表提供程序,我們正在處理注冊(cè)表的 HKEY_CURRENT_USER 部分。如果我們要處理 HKEY_LOCAL_MACHINE,那么我們就需要將常量設(shè)置為 &H80000001;將常量設(shè)置為 &H80000003 則可以處理 HKEY_USERS。
由于我們?cè)诒镜赜?jì)算機(jī)上執(zhí)行這個(gè)腳本,因此我們將變量 strComputer 設(shè)置為點(diǎn)(在 WMI 中表示本地計(jì)算機(jī)的快捷方式)。注冊(cè)表提供程序的出色之處在于,它可以在遠(yuǎn)程計(jì)算機(jī)上工作,并且性能和在本地計(jì)算機(jī)上一樣好。因此如果您希望更改遠(yuǎn)程計(jì)算機(jī)上的屏幕保護(hù)等待時(shí)間,只需將 strComputer 的值設(shè)置為那臺(tái)計(jì)算機(jī)的名稱即可。
從此時(shí)開始,我們連接到 WMI 服務(wù),并指定注冊(cè)表路徑 (Control Panel\Desktop)。接下來(lái)我們將調(diào)用 CreateKey 方法。這是為了保險(xiǎn)起見。因?yàn)槿绻覀儾檎业淖?cè)表項(xiàng)不存在,則 CreateKey 就會(huì)創(chuàng)建這個(gè)注冊(cè)表項(xiàng)。如果注冊(cè)表項(xiàng)已經(jīng)存在,那么 CreateKey 將會(huì)保留這個(gè)注冊(cè)表項(xiàng)。
在指定要更改的注冊(cè)表值名稱 (ScreenSaveTimeout) 以及新值 (300) 之后,接下來(lái)我們使用 SetStringValue 方法來(lái)將等待時(shí)間更改為 300 秒。
還不算太壞,是吧?有關(guān)注冊(cè)表提供程序——可能是所有 WMI 提供程序中最不常用的一個(gè)了——的更多信息,請(qǐng)參閱“Microsoft Windows 2000 腳本指南”中的 “注冊(cè)表”一章。并訪問(wèn)聲名不佳的Tweakomatic,這個(gè)令人驚奇的實(shí)用工具可以編寫可對(duì)注冊(cè)表進(jìn)行讀寫操作的腳本。為了從傳統(tǒng)商業(yè)中沾光,它使用了 Tweakomatic 的名字,這的確大有好處。
順便提及,以下是另一個(gè)比較有用的屏幕保護(hù)程序腳本,這個(gè)腳本可以確保屏幕保護(hù)程序受到密碼保護(hù):
HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Control Panel\Desktop"
objReg.CreateKey HKEY_CURRENT_USER, strKeyPath
ValueName = "ScreenSaverIsSecure"
strValue = "1"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue
你看,注冊(cè)表腳本編寫多么有趣?!Tweakomatic 還有其他腳本可以用來(lái)管理屏幕保護(hù)程序、開始菜單、任務(wù)欄、Windows 資源管理器文件夾設(shè)置以及更多內(nèi)容。如果您正在尋找管理常見桌面設(shè)置的方法,這是一個(gè)開始進(jìn)行工作的好地方。
嗨,Scripting Guy!是否可以使用腳本來(lái)修改計(jì)算機(jī)上屏幕保護(hù)的等待時(shí)間長(zhǎng)度?
-- JN
答:
嗨,JN。出于某些原因,Microsoft 的腳本技術(shù)在涉及 Windows 設(shè)置和組件方面有些不足,例如屏幕保護(hù)、墻紙、任務(wù)欄和開始菜單等等。您可以使用 WMI(尤其是 Win32_Desktop 類)來(lái)讀取這些值,但不能使用 Win32_Desktop 類(或是任何等價(jià)的類或?qū)ο螅﹣?lái)修改這些值。為什么呢?老實(shí)說(shuō),我們也不知道;
幸好,這些值大都存儲(chǔ)在 Windows 注冊(cè)表中,而只要這些值存儲(chǔ)在注冊(cè)表中,您就可以編寫腳本來(lái)管理它們。屏幕保護(hù)程序也不例外。打開 Regedit,讓我們來(lái)看看 HKEY_CURRENT_USER 內(nèi)部;在 Control Panel\Desktop 項(xiàng)中,您將會(huì)看到幾個(gè)與屏幕保護(hù)程序有關(guān)的注冊(cè)表值,包括 ScreenSaveTimeout。您可能猜到了,這就是確定屏幕保護(hù)等待的時(shí)間長(zhǎng)度的注冊(cè)表值。默認(rèn)情況下,這個(gè)值被設(shè)置為 600 秒,也就是 10 分鐘。
那么,如何更改這個(gè)值呢?通過(guò)使用如下的腳本可以將等待時(shí)間更改為 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
為了達(dá)到這個(gè)目的,我們首先創(chuàng)建一個(gè)名為 HKEY_CURRENT_USER 的常量,并將它的值設(shè)置為 &H80000001;這告訴 WMI 的注冊(cè)表提供程序,我們正在處理注冊(cè)表的 HKEY_CURRENT_USER 部分。如果我們要處理 HKEY_LOCAL_MACHINE,那么我們就需要將常量設(shè)置為 &H80000001;將常量設(shè)置為 &H80000003 則可以處理 HKEY_USERS。
由于我們?cè)诒镜赜?jì)算機(jī)上執(zhí)行這個(gè)腳本,因此我們將變量 strComputer 設(shè)置為點(diǎn)(在 WMI 中表示本地計(jì)算機(jī)的快捷方式)。注冊(cè)表提供程序的出色之處在于,它可以在遠(yuǎn)程計(jì)算機(jī)上工作,并且性能和在本地計(jì)算機(jī)上一樣好。因此如果您希望更改遠(yuǎn)程計(jì)算機(jī)上的屏幕保護(hù)等待時(shí)間,只需將 strComputer 的值設(shè)置為那臺(tái)計(jì)算機(jī)的名稱即可。
從此時(shí)開始,我們連接到 WMI 服務(wù),并指定注冊(cè)表路徑 (Control Panel\Desktop)。接下來(lái)我們將調(diào)用 CreateKey 方法。這是為了保險(xiǎn)起見。因?yàn)槿绻覀儾檎业淖?cè)表項(xiàng)不存在,則 CreateKey 就會(huì)創(chuàng)建這個(gè)注冊(cè)表項(xiàng)。如果注冊(cè)表項(xiàng)已經(jīng)存在,那么 CreateKey 將會(huì)保留這個(gè)注冊(cè)表項(xiàng)。
在指定要更改的注冊(cè)表值名稱 (ScreenSaveTimeout) 以及新值 (300) 之后,接下來(lái)我們使用 SetStringValue 方法來(lái)將等待時(shí)間更改為 300 秒。
還不算太壞,是吧?有關(guān)注冊(cè)表提供程序——可能是所有 WMI 提供程序中最不常用的一個(gè)了——的更多信息,請(qǐng)參閱“Microsoft Windows 2000 腳本指南”中的 “注冊(cè)表”一章。并訪問(wèn)聲名不佳的Tweakomatic,這個(gè)令人驚奇的實(shí)用工具可以編寫可對(duì)注冊(cè)表進(jìn)行讀寫操作的腳本。為了從傳統(tǒng)商業(yè)中沾光,它使用了 Tweakomatic 的名字,這的確大有好處。
順便提及,以下是另一個(gè)比較有用的屏幕保護(hù)程序腳本,這個(gè)腳本可以確保屏幕保護(hù)程序受到密碼保護(hù):
HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Control Panel\Desktop"
objReg.CreateKey HKEY_CURRENT_USER, strKeyPath
ValueName = "ScreenSaverIsSecure"
strValue = "1"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValue
你看,注冊(cè)表腳本編寫多么有趣?!Tweakomatic 還有其他腳本可以用來(lái)管理屏幕保護(hù)程序、開始菜單、任務(wù)欄、Windows 資源管理器文件夾設(shè)置以及更多內(nèi)容。如果您正在尋找管理常見桌面設(shè)置的方法,這是一個(gè)開始進(jìn)行工作的好地方。
相關(guān)文章
VBS基礎(chǔ)篇 - FileSystemObject對(duì)象詳解
文件系統(tǒng)是所有操作系統(tǒng)最重要的部分之一,腳本經(jīng)常會(huì)需要對(duì)文件及文件夾進(jìn)行訪問(wèn)和管理,在Vbs中對(duì)桌面和文件系統(tǒng)進(jìn)行訪問(wèn)的頂級(jí)對(duì)象是FileSystemObject,需要的朋友可以參考下2018-05-05
Vbs實(shí)現(xiàn)監(jiān)測(cè)斷網(wǎng)就關(guān)機(jī)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vbs實(shí)現(xiàn)監(jiān)測(cè)斷網(wǎng)就關(guān)機(jī)的實(shí)現(xiàn)代碼,這個(gè)vbs腳本檢測(cè)網(wǎng)卡狀態(tài),如果斷網(wǎng)馬上強(qiáng)行關(guān)機(jī),需要的朋友可以參考下2023-01-01
vbscript的骨灰級(jí)寫法計(jì)算1到100的和
vbscript的骨灰級(jí)寫法計(jì)算1到100的和的代碼,實(shí)現(xiàn)的比較不錯(cuò)2012-05-05
vbs中使用 ADO 讀取所有數(shù)據(jù)均在一行上的文本文件的代碼
vbs中使用 ADO 讀取所有數(shù)據(jù)均在一行上的文本文件的代碼...2007-03-03
初窺WMI_Vbs腳本編程簡(jiǎn)明教程補(bǔ)充讀物
看了沼澤介紹的wmi腳本相關(guān)知識(shí),對(duì)新手是個(gè)不錯(cuò)的教材,如果想和系統(tǒng)結(jié)合的更好,想實(shí)現(xiàn)更大功能的代碼,那么學(xué)習(xí)vbs就不得不用wmi腳本2008-06-06
vbs 獲取當(dāng)前目錄文件數(shù)量的代碼(不包括子文件夾中的)
有時(shí)候我們需要獲取當(dāng)前目錄下有多少個(gè)文件,那么就可以參考下面的代碼2013-09-09
VBS中CreateObject和WScript.CreateObject的區(qū)別介紹
很多VBS新手都很困惑CreateObject和WScript.CreateObject有什么區(qū)別,為什么一些代碼中用CreateObject,而另一些卻用WScript.CreateObject2013-05-05
VBS For Next循環(huán)的一些細(xì)節(jié)
For Next 語(yǔ)句是 VBS 中常用的循環(huán)語(yǔ)句,你可能已經(jīng)用過(guò)無(wú)數(shù)次 For Next 循環(huán),但是你是否注意過(guò)它的一些細(xì)節(jié)呢2013-01-01

