HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1"
ValueName = "1200"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue
Wscript.Echo "Run ActiveX Controls and Plug-ins"
If IsNull(dwValue) Then
Wscript.Echo "Intranet sites: The value is either Null or could not be found in the registry."
ElseIf dwValue = 0 Then
Wscript.Echo "Intranet sites: Enabled"
ElseIf dwValue = 1 Then
Wscript.Echo "Intranet sites: Prompt"
ElseIf dwValue = 3 Then
Wscript.Echo "Intranet sites: Disabled"
ElseIf dwValue = 65536 Then
Wscript.Echo "Intranet sites: Administrator Approved"
End If
一開始我們先定義一個名叫 HKEY_CURRENT_USER 的常數,將該值設為 &H80000001,以便告知指令碼要我們要使用哪一個登錄 Hive。連接到 WMI 類別時,請注意 StdRegProv (Standard Registry Provider) 類別可在 root\default 命名空間中找到。(許多指令碼撰寫人員會以為這個類別和其他的 WMI 類別一樣都放在 root\cimv2 裡面,答錯了。)
接著指定兩個變數的值:
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1"
ValueName = "1200"
讀者應該看到了,變數 strKeyPath 把登錄路徑放在 HKEY_CURRENT_USER 裡面 (路徑內千萬不能包含 HKEY_CURRENT_USER,否則指令碼會失敗),並將變數 ValueName 設成 1200,也恰好是我們要讀取的登錄值。
接著再呼叫 GetDWORDValue 方法,以便能讀取登錄中的 DWORD 值:
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue
請注意,這裡必須把 GetDWORDValue 傳給幾個參數:
- HKEY_CURRENT_USER,這是一個常數,告訴指令碼該使用哪個登錄 Hive。
- strKeyPath,這是一個包含登錄路徑的變數。
- ValueName,這是一個變數,代表我們要讀取的登錄值。
- dwValue,這是一個「輸出參數」,最後用來存放從登錄獨取得來的值。您要是奇怪我們為什麼還沒有指定值給 dwValue,這是因為設計上就是如此,不需要替輸出參數指定值。GetDWORDValue 會讀取儲存在登錄值 (1200) 裡面的資訊,然後這個方法會把值指派給 dwValue。
怎麼樣?酷吧?
現在只要回應從登錄擷取的值就可以了。前面說過,這個值可能是1、3 或 65536。因此我們加了一個簡單的 If Then ElseIf 區塊來判斷傳回值,使傳回的資訊以更有意義的訊息呈現:
If IsNull(dwValue) Then
Wscript.Echo "Intranet sites: The value is either Null or could not be found in the registry."
ElseIf dwValue = 0 Then
Wscript.Echo "Intranet sites: Enabled"
ElseIf dwValue = 1 Then
Wscript.Echo "Intranet sites: Prompt"
ElseIf dwValue = 3 Then
Wscript.Echo "Intranet sites: Disabled"
ElseIf dwValue = 65536 Then
Wscript.Echo "Intranet sites: Administrator Approved"
End If
沒錯,只要知道值 (以何種型態) 存放在登錄的哪裡,一點都不難。
下面提供能夠傳回四個安全性區域的指令碼,替您省去打字 (和剪剪貼貼) 的麻煩。
HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1"
ValueName = "1200"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue
Wscript.Echo "Run ActiveX Controls and Plugins"
If IsNull(dwValue) Then
Wscript.Echo "Intranet sites: The value is either Null or could not be found in the registry."
ElseIf dwValue = 0 Then
Wscript.Echo "Intranet sites: Enabled"
ElseIf dwValue = 1 Then
Wscript.Echo "Intranet sites: Prompt"
ElseIf dwValue = 3 Then
Wscript.Echo "Intranet sites: Disabled"
ElseIf dwValue = 65536 Then
Wscript.Echo "Intranet sites: Administrator Approved"
End If
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2"
ValueName = "1200"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue
If IsNull(dwValue) Then
Wscript.Echo "Trusted sites: The value is either Null or could not be found in the registry."
ElseIf dwValue = 0 Then
Wscript.Echo "Trusted sites: Enabled"
ElseIf dwValue = 1 Then
Wscript.Echo "Trusted sites: Prompt"
ElseIf dwValue = 3 Then
Wscript.Echo "Trusted sites: Disabled"
ElseIf dwValue = 65536 Then
Wscript.Echo "Trusted sites: Administrator Approved"
End If
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3"
ValueName = "1200"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue
If IsNull(dwValue) Then
Wscript.Echo "Internet sites: The value is either Null or could not be found in the registry."
ElseIf dwValue = 0 Then
Wscript.Echo "Internet sites: Enabled"
ElseIf dwValue = 1 Then
Wscript.Echo "Internet sites: Prompt"
ElseIf dwValue = 3 Then
Wscript.Echo "Internet sites: Disabled"
ElseIf dwValue = 65536 Then
Wscript.Echo "Internet sites: Administrator Approved"
End If
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4"
ValueName = "1200"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue
If IsNull(dwValue) Then
Wscript.Echo "Restricted sites: The value is either Null or could not be found in the registry."
ElseIf dwValue = 0 Then
Wscript.Echo "Restricted sites: Enabled"
ElseIf dwValue = 1 Then
Wscript.Echo "Restricted sites: Prompt"
ElseIf dwValue = 3 Then
Wscript.Echo "Restricted sites: Disabled"
ElseIf dwValue = 65536 Then
Wscript.Echo "Restricted sites: Administrator Approved"
End If
執行指令碼後,便會取得類似如下所示的輸出結果:
Run ActiveX Controls and Plugins
Intranet sites: Enabled
Trusted sites: Enabled
Internet sites: Enabled
Restricted sites: Disabled
還有什麼能為您服務的嗎?沒錯,也可以趁機設定這個登錄的值,不過還是留待改天在說囉。 |