問:
您好,腳本專家!我最近下載了你們的“腳本中心”屏幕保護(hù)程序,當(dāng)有人登錄計(jì)算機(jī)時(shí),它運(yùn)行起來棒極了。但是無人登錄時(shí),計(jì)算機(jī)卻使用其它屏幕保護(hù)程序。如何讓計(jì)算機(jī)在無人登錄時(shí)也使用“腳本中心”屏幕保護(hù)程序?
-- RF
答:
您好,RF。您知道,我們遇到過這種情況,您可能在設(shè)法欺騙這些老腳本專家們。舉個(gè)例子來說,我們?cè)趺粗滥M麩o人登錄計(jì)算機(jī)時(shí)運(yùn)行的屏幕保護(hù)程序就是我們的屏幕保護(hù)程序?也許您只是奉承腳本專家,好讓腳本專家回答您的問題?;卮鹜陠栴}后,您就會(huì)把我們甩掉,安裝其它一些與腳本編寫有關(guān)的屏幕保護(hù)程序作為默認(rèn)屏幕保護(hù)程序。RF 啊 RF:您真的認(rèn)為腳本專家頭腦如此簡單愿意受用這樣的假意恭維嗎?
嗯,您是該這樣認(rèn)為,因?yàn)槲覀兇_實(shí)如此:
復(fù)制代碼 代碼如下:
Const HKEY_USERS = H80000003
strComputer = "."
Set objReg = GetObject("winmgmts:\\" strComputer "\root\default:StdRegProv")
strKeyPath = ".Default\Control Panel\Desktop"
ValueName = "SCRNSAVE.EXE"
strValue = "C:\WINDOWS\System32\Script Center.scr"
objReg.SetStringValue HKEY_USERS, strKeyPath, ValueName, strValue
正如您所看到的,這是一個(gè)用于更改注冊(cè)表的 WMI 腳本。它與我們過去為您展示的許多其它注冊(cè)表修改腳本非常相似,但有一處特殊更改。在以前的腳本中,我們總是先定義一個(gè)常量,告訴腳本我們要處理 HKEY_CURRENT_USER 或 HKEY_LOCAL_MACHINE 注冊(cè)表配置單元。這樣做有充分的理由:我們希望將所做的一切更改都應(yīng)用于當(dāng)前用戶或計(jì)算機(jī)本身。不過,請(qǐng)注意此腳本的第一行:
Const HKEY_USERS = H80000003
秘密就在這里:這一次我們要處理 HKEY_USERS 注冊(cè)表配置單元。除了其它用途外,HKEY_USERS 配置單元為您提供了這樣一個(gè)場所:在其中配置的設(shè)置可應(yīng)用于登錄到計(jì)算機(jī)的任何用戶,而不僅僅是某一特定的用戶。換言之,如果您使用 HKEY_USERS 配置屏幕保護(hù)程序,該屏幕保護(hù)程序便是默認(rèn)屏幕保護(hù)程序,會(huì)應(yīng)用于登錄到計(jì)算機(jī)的任何新用戶。(除非用戶明確配置其它屏幕保護(hù)程序,否則會(huì)繼續(xù)應(yīng)用默認(rèn)屏幕保護(hù)程序。)同樣,無人登錄計(jì)算機(jī)時(shí),也會(huì)使用此默認(rèn)屏幕保護(hù)程序。
酷吧?順便提一下,您還可以使用該注冊(cè)表配置單元配置顯示在登錄屏幕上的墻紙;只需將注冊(cè)表值 HKEY_USERS\.Default\Control Panel\Desktop\Wallpaper 設(shè)置為相應(yīng)的文件路徑即可。類似下面的代碼:
復(fù)制代碼 代碼如下:
Const HKEY_USERS = H80000003
strComputer = "."
Set objReg = GetObject("winmgmts:\\" strComputer "\root\default:StdRegProv")
strKeyPath = ".Default\Control Panel\Desktop"
ValueName = "Wallpaper"
strValue = "C:\WINDOWS\System32\Script Center.bmp"
objReg.SetStringValue HKEY_USERS, strKeyPath, ValueName, strValue
定義常量后,接下來要連接本地計(jì)算機(jī)上的 WMI 服務(wù)(雖然此腳本在遠(yuǎn)程計(jì)算機(jī)上的運(yùn)行效果同樣不錯(cuò))。然后,為下面三個(gè)不同的變量賦值:
• strKeyPath - HKEY_USERS 內(nèi)注冊(cè)表項(xiàng)的路徑。在本例中,路徑為 .Default\Control Panel\Desktop。
• ValueName - 要更改的注冊(cè)表值的名稱 (SCRNSAVE.EXE)。
• strValue - 要賦給 SCRNSAVE.EXE 的新值。在此腳本中,該值是此屏幕保護(hù)程序的完整路徑。
最后,我們要調(diào)用 SetStringValue 方法(將常量 HKEY_USERS 和這三個(gè)變量一起作為參數(shù)傳遞),這樣就大功告成了:
objReg.SetStringValue HKEY_USERS, strKeyPath, ValueName, strValue
現(xiàn)在,如果您注銷后再等幾分鐘,就會(huì)運(yùn)行“腳本中心”屏幕保護(hù)程序。(假設(shè)注冊(cè)表值 ScreenSaveActive 設(shè)置為 1;如果設(shè)置為 0,則表示禁用該屏幕保護(hù)程序。)
知道這有多簡單了吧?噢,不,我們不是說腳本(雖然腳本也非常簡單);我們是說要獲得問題的答案有多簡單,當(dāng)然,您提問題的措辭很對(duì)路。就象常說的那句話,誰都愛聽恭維話。