Teď jste offline a čekáte, až se znova připojí internet.

Instalace opravy zabezpečení 824146 (MS03-039) nebo 823980 (MS03-026) do vzdálených hostitelských počítačů pomocí skriptu v jazyce Visual Basic

Podpora Windows XP byla ukončena.

Společnost Microsoft ukončila dne 8. dubna 2014 podporu Windows XP. Tato změna ovlivnila aktualizace softwaru a možnosti zabezpečení. Další informace o tom, co to pro vás znamená a jak zajistit ochranu.

Podpora pro Windows Server 2003 byla ukončena 14. července 2015

Společnost Microsoft ukončila podporu pro Windows Server 2003 dne 14. července 2015. Tato změna ovlivnila aktualizace softwaru a možnosti zabezpečení. Další informace o tom, co to pro vás znamená a jak zajistit ochranu.

Souhrn
Součástí tohoto článku je ukázkový skript v jazyce Microsoft Visual Basic Scripting Edition nazvaný Patchinstall.vbs. Tento skript představuje příklad, jak mohou správci sítě použít skriptování WMI (Windows Management Instrumentation) k instalaci opravy zabezpečení 824146 (MS03-039) nebo 823980 (MS03-026) do vzdálených hostitelských počítačů v prostředí domény Microsoft Windows NT, Windows 2000 nebo Windows Server 2003, v nichž tato oprava dosud není nainstalována. Skript Patchinstall.vbs použije vstupní soubor (Ipfile.txt) obsahující adresy IP a nainstaluje opravu zabezpečení 824146 (MS03-039) nebo 823980 (MS03-026) ze známého umístění do vzdáleného hostitelského počítače (C:\Patchinst.exe). Další informace o opravě zabezpečení 824146 (MS03-026) získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
824146 MS03-039: Přetečení vyrovnávací paměti ve službě RPCSS umožňuje útočníkovi spustit nebezpečné programy
Další informace o opravě zabezpečení 823980 získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
823980 MS03-026: Přetečení vyrovnávací paměti v rozhraní protokolu RPC umožňuje spuštění kódu
Další informace o nástroji, jehož pomocí mohou správci sítě rozpoznat v síti počítače, ve kterých nejsou nainstalovány tyto opravy zabezpečení, získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
827363 Použití skenovacího nástroje KB 824146 k určení hostitelských počítačů, ve kterých nejsou nainstalovány opravy zabezpečení 823980 (MS03-026) a 824146 (MS03-039)

Poznámky

  • K úspěšné instalaci opravy zabezpečení 824146 nebo 823980 potřebujete oprávnění správce vzdálených cílových počítačů.
  • Cílové počítače se systémem Microsoft Windows XP musí být připojeny do domény Windows NT, Windows 2000 nebo Windows Server 2003, aby mohl být skript Patchinstall.vbs úspěšně použit.
  • Skript Patchinstall.vbs používá službu WMI (Windows Management Instrumentation). Služba WMI závisí na modelu DCOM (Distributed Component Object Model). Z toho důvodu nelze skript Patchinstall.vbs použít v cílových počítačích, v nichž byl model DCOM zakázán z důvodu ochrany proti chybě popsané v bulletinech Microsoft Security Bulletin MS03-039 a MS03-026.
  • Balíček opravy zabezpečení 824146 nebo 823980 je třeba umístit do místní složky v počítači, v němž bude spuštěn skript Patchinstall.vbs, a přejmenovat na Patch_XP.exe (v systému Windows XP), Patch_W2K.exe (v systému Windows 2000) nebo Patch_W2K3.exe (v systému Windows Server 2003).
  • Skript Patchinstall.vbs lze upravit tak, aby instaloval také další opravy.
Další informace
Skript Patchinstall.vbs provede následující úkoly:
  • Přečte seznam adres IP vzdálených hostitelských počítačů, do nichž má být nainstalována oprava zabezpečení 824146 nebo 823980. Skript tento seznam získá z textového souboru ve formátu ASCII (Ipfile.txt), který obsahuje seznam adres IP (jedna adresa IP na každém řádku). Jako soubor Ipfile.txt můžete například použít soubor protokolu Vulnerable.txt skenovacího nástroje KB824146.
  • Skript získá první adresu IP ze seznamu.
  • Skript určí verzi systému Windows v cílovém počítači.
  • Skript provede mapování jednotky Z v počítači se skriptem na jednotku C$ v cílovém počítači.
  • Skript zkopíruje správnou verzi opravy (pro systém Windows XP, Windows 2000 nebo Windows Server 2003) do souboru C:\Patchinst.exe v cílovém počítači (pomocí mapování jednotky Z).
  • Skript spustí instalaci opravy a potom automaticky restartuje cílový počítač bez jakéhokoli uživatelského vstupu nebo zobrazení dialogových oken pomocí přepínačů -q -f (bezobslužný režim instalace).
  • Skript vyčká na dokončení instalace.
  • Skript se pokusí odstranit soubor C:\Patchinst.exe z cílového počítače.
  • Skript odstraní mapování jednotky Z.
  • Skript zpracuje další adresu IP v seznamu.
Důležité: Společnost Microsoft doporučuje upravit tento ukázkový skript pro prostředí vaší sítě a potom jej před použitím ve výrobním prostředí otestovat v testovacím prostředí.

Chcete-li skript Patchinstall.vbs použít, zkopírujte následující skript do textového souboru nazvaného Patchinstall.vbs. Potom spusťte skript Patchinstall.vbs zadáním následujícího příkazu na příkazovém řádku:
cscript patchinstall.vbs Ipfile.txt Místní_cesta_k_opravám
V tomto příkazu představuje parametr Ipfile.txt textový soubor obsahující seznam adres IP vzdálených hostitelských počítačů, do nichž chcete instalovat opravu zabezpečení 824146 nebo 823980. Místní_cesta_k_opravám je úplná cesta ke složce obsahující balíčky opravy zabezpečení 824146 nebo 823980 (přejmenované v systému Windows XP na Patch_XP.exe, v systému Windows 2000 na Patch_W2k.exe a v systému Windows Server 2003 na Patch_W2k3.exe).

Skript Patchinstall.vbs

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky výslovně uvedené nebo mlčky předpokládané, včetně, bez omezení, mlčky předpokládaných záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci odborné pomoci společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.
' Patchinstall.vbs' Patch installation script for MS03-026 and MS03-039' (c) Microsoft 2003' v1.03 clon error resume nextconst XP_Patch = "Patch_XP.exe"const W2k_Patch = "Patch_W2k.exe"const W2k3_Patch = "Patch_W2k3.exe"If right(ucase(wscript.FullName),11)="WSCRIPT.EXE" then     wscript.echo "ERROR: You must run this script using cscript, for example 'cscript " & wscript.scriptname & "'."     wscript.quit 0end if' USAGEif wscript.arguments.count <> 2 then     wscript.echo "Usage: cscript " & wscript.scriptname & " <IpFile.txt> <LocalPathToPatches>" & vbCrLf & vbCrLf & _     "  <LocalPathToPatches> must be a full path of a folder that contains all of these files:" & vbCrLf & _     "      " & XP_Patch & vbCrLf & _      "      " & W2k_Patch & vbCrLf & _      "      " & W2k3_Patch     wscript.quitend ifipFile = wscript.arguments(0)localPathToPatches = wscript.arguments(1)set onet = createobject("wscript.network")set ofs = createobject("scripting.filesystemobject")' Verify that ipfile is accessible.set oipFile = ofs.opentextfile(ipFile, 1, false)if (Err.Number <> 0) then     wscript.echo "Cannot open " & ipFile     wscript.quitend if' Make sure to end with a \ character.if right(localPathToPatches, 1) <> "\" then     localPathToPatches = localPathToPatches & "\"end if'Note that cim_datafile does not support UNC paths'so everything must be handled through mapped drives.if left(localPathToPatches, 2) = "\\" then     wscript.echo "<pathToExecutable> cannot be a UNC path, please map a drive locally"     wscript.quitend ifexeWinXP = ofs.getfile(localPathToPatches + XP_Patch).nameexeW2k = ofs.getfile(localPathToPatches + W2k_Patch).nameexeW2k3 = ofs.getfile(localPathToPatches + W2k3_Patch).name' Verify that the patches are accessible.if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then     wscript.echo "Cannot find patch files."     wscript.echo "Please verify that the <LocalPathToPatches> folder contains all of these files:" & vbCrLf & _     "      " & XP_Patch & vbCrLf & _      "      " & W2k_Patch & vbCrLf & _      "      " & W2k3_Patch     wscript.quitend ifset osvcLocal = getobject("winmgmts:root\cimv2")'The error-handling code is below the function that may throw one - execute it.on error resume nextwhile not oipFile.atEndOfStream     ip = oipFile.ReadLine()     wscript.echo vbCrLf & "Connecting to " & ip & "..."     Err.Clear     set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2")     if (Err.Number <> 0) then          wscript.echo "Failed to connect to " & ip & "."     else          exeCorrectPatch = detectOSPatch(osvcRemote)          if (exeCorrectPatch <> "") then               ' Lay the bits on the remote computer.               wscript.echo "Installing patch " & exeCorrectPatch & "..."               onet.mapnetworkdrive "z:", "\\" & ip & "\C$"               set osourceFile = osvcLocal.get("cim_datafile=""" & replace(localPathToPatches, "\", "\\") & exeCorrectPatch & """")               ret = osourceFile.Copy("z:\\Patchinst.exe")               if (ret <> 0 and ret <> 10) then                    ' Failure detected and failure was not "file already exists."                    wscript.echo "Failed copy to " & ip & " - error: " & ret               else                    set oprocess = osvcRemote.Get("win32_process")                         ' Start the installation without user interaction, and force a restart after completion.                    ret = oprocess.create("c:\\Patchinst.exe -q -f")                    if (ret <> 0) then                         wscript.echo "Failed to start process on " & ip & ": " & ret                    else                         ' Get a reference to the file that was copied.                         set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")                         ' Wait for the installation to complete.                         for waitTime = 0 to 120     ' Lay and wait--up to two minutes for the installation to complete.                              wscript.Sleep 1000     ' Sleep one second.                              ' Delete temporary file as soon as possible after it is freed.                              if (odestFile.Delete() = 0) then                                   exit for                              end if                         next ' Otherwise, loop again and keep waiting...                         wscript.echo "Installation successful."                    end if     'Create process succeeded.               end if     'Copy succeeded.               onet.removenetworkdrive "z:", true          end if      ' The script knows which patch to install.     end if ' Do the next IP address, then the next IP address... wendoipFile.close()'Clean up, remove drive mapping (check this time, because it may not have been mapped).if ofs.folderexists("z:\") then     onet.removenetworkdrive "z:", trueend ifwscript.echo vbCrLf & "Patching complete. Exiting."function detectOSPatch(osvcRemote)     set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")     'Only one instance is ever returned (the currently active OS), even though the following is a foreach.     for each objOperatingSystem in oOSInfo          if (objOperatingSystem.OSType <> 18) then               ' Make sure that this computer is Windows NT-based.               wscript.echo ip & " is not a Windows XP, Windows 2000, or Windows 2003 Server computer."          else               if (objOperatingSystem.Version = "5.0.2195") then                    ' Windows 2000 SP2, SP3, SP4.                    if (objOperatingSystem.ServicePackMajorVersion = 2) or (objOperatingSystem.ServicePackMajorVersion = 3) or _			(objOperatingSystem.ServicePackMajorVersion = 4) then                         systemType = exeW2k                    end if               elseif (objOperatingSystem.Version = "5.1.2600") then                    ' Windows XP RTM, SP1.                    if (objOperatingSystem.ServicePackMajorVersion = 0) or (objOperatingSystem.ServicePackMajorVersion = 1) then                         systemType = exeWinXP                    end if               elseif (objOperatingSystem.Version = "5.2.3790") then                    ' Windows Server 2003 RTM                    if (objOperatingSystem.ServicePackMajorVersion = 0) then                         systemType = exeW2k3                    end if               end if               if (systemType = "") then                     'This was a Windows NT-based computer, but not with a valid service pack.                    wscript.echo "Could not patch " & ip & " - unhandled OS version: " & objOperatingSystem.Caption & " SP" & _				objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"               end if          end if     next     detectOSPatch = systemTypeend function
Vlastnosti

ID článku: 827227 - Poslední kontrola: 08/09/2005 07:26:27 - Revize: 5.4

Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Web Edition, Microsoft Windows XP Professional, Microsoft Windows XP Tablet PC Edition, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows 2000 Server

  • kbinfo KB827227
Váš názor