ZoneElevation-wmi-multi.vbs

作者: The Scripting Guys,Microsoft Corporation

這個指令碼使用「WMI 系統登錄」提供者來編輯登錄,以開啟或關閉 iexplore.exe 程序的區域提升限制。它可以在多部電腦上執行。

ZoneElevation-wmi-multi.vbs 對應於 ZoneElevation.vbs;ZoneElevation.vbs 是《Application Compatibility Testing and Mitigation Guide for Windows XP Service Pack 2》(Windows XP Service Pack 2 的應用程式相容性測試及因應指南) 隨附的個指令碼之一,並記錄在<附錄>中。您可以下載用來安裝該指南及其相關指令碼的 Windows Installer (.msi) 檔案,網址是:

http://www.microsoft.com/downloads/details.aspx?FamilyId=9300BECF-2DEE-4772-ADD9-AD0EAF89C4A7&displaylang=en (英文)

這個指令碼的輸入來自逗號分隔的文字檔 zoneelev-hosts.csv,它包含將執行指令碼的電腦名稱。這個文字檔必須和指令碼位於相同的資料夾。

輸入檔案的每行都必須包含電腦名稱,後面跟著逗號,接著是 0 或 1。每一部電腦必須都能透過網路存取,而且指令碼用來執行的認證必須具有系統管理權限;例如 (開啟 client1 & server1,而關閉 client2 及 server2):


client1,1
client2,0
server1,1
server2,0


有效值如下:

1 = 開啟區域提升限制。

0 = 關閉區域提升限制。

確定最後一行後面沒有分行符號,因為指令碼會將它解譯為空字串。

若要使用指令碼,請複製程式碼並將它貼入「記事本」,再將指令碼儲存為 ZoneElevation-wmi-multi.vbs。若要執行指令碼,請將命令提示視窗開啟到指令碼的目錄,並輸入:

cscript zoneelevation-wmi-multi.vbs

如果電腦上的預設指令碼裝載是 Cscript.exe,就可以省略開頭的 cscript。

指令碼


'******************************************************************************
'ZoneElevation-wmi-multi.vbs
'Author: Peter Costantini, the Microsoft Scripting Guys
'Date: 08/25/04
'Revision 1.0
'System requirement: Windows XP Service Pack 2.
'This script edits the registry to turn on or off the zone elevation
'restriction for the iexplore.exe process.
'It can be run against multiple remote computers.
'The multiple computers must be specified in a comma-delimited
'text file, zoneelev-hosts.csv, in the same directory as the script.
'Each line of zoneelev-hosts.csv must have a computer name followed by a comma,
'followed by either 0 or 1.
'Do not add a newline to the end of the last line.
'Example (turn on for client1 & server1, turn off for client2 and server2):
'client1,1
'client2,0
'server1,1
'server2,0
'Valid values are as follows:
'1 = Turns on the zone elevation restriction.
'0 = Turns off the zone elevation restriction.
'******************************************************************************

On Error Resume Next

'Global constants and variables
Const FOR_READING = 1
strFilename = "zoneelev-hosts.csv"

'If text file exists, read list of hosts and operation for each.
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strFilename) Then
  Set objFile = objFSO.OpenTextFile(strFilename, FOR_READING)
Else
  WScript.Echo "Input file " & strFilename & " not found."
  WScript.Quit
End If
Do Until objFile.AtEndOfStream
  strHost = objFile.ReadLine
  arrHost = Split(strHost, ",")
'Get name of computer
  strComputer = arrHost(0)
'DWORD value of RestrictRemoteClients for this host.
  g_intValue = arrHost(1)
  Wscript.Echo VbCrLf & strComputer
  Wscript.Echo String(Len(strComputer), "-")
'Connect with WMI service and StdRegProv class.
  Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
   strComputer & "\root\default:StdRegProv")
  If Err = 0 Then
    SetValue
  Else
    WScript.Echo "Unable to connect to WMI StdRegProv on " & strComputer & "."
    WScript.Echo "  Error Number:" & Err.Number
    WScript.Echo "  Source:" & Err.Source
    WScript.Echo "  Description:" & Err.Description
  End If
  Err.Clear
Loop
objFile.Close

'******************************************************************************

Sub SetValue

'Local constants and variables
Const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl" & _
 "\FEATURE_ZONE_ELEVATION"
strEntryName = "iexplore.exe"

intReturn = objReg.SetDWORDValue(HKEY_LOCAL_MACHINE, strKeyPath, _
 strEntryName, g_intValue)
If intReturn = 0 Then
  WScript.Echo "Changed value of " & strEntryName & " to " & g_intValue & "."
Else
  WScript.Echo "ERROR: Unable to change value of " & strEntryName & "."
End If

End Sub


如需線上對等支援,請加入 msnews.microsoft.com 新聞伺服器上的 microsoft.public.windows.server.scripting (英文) 社群。若您想要對範例指令碼或指令碼指南,提供意見、回報問題,請與 Microsoft TechNet (英文) 連絡。

免責聲明

此範例指令碼不支援任何 Microsoft 標準技術支援方案或服務。上述的範例指令碼係依「現況」提供,不附帶任何擔保。Microsoft 公司不提供任何的默示擔保,包括但不限於任何商業適售性及特定用途之適用性的默示擔保。您必須承擔此範例指令碼或文件所造成的一切風險。在任何情況下,無論是使用或無法使用此範例指令碼或文件所造成的損害 (包括但不限於營業之損失、營業之中斷、營業資訊之滅失及其他金錢損失),Microsoft 公司、作者群或此指令碼之創作、製造或散發有關之人員概不負責,即使 Microsoft 已經被告知損害發生之可能性亦同。

顯示: