Du er offline. Venter på, at der oprettes forbindelse til internettet igen

Sådan bruges et Visual Basic Script til at installere sikkerhedsopdatering 824146 (MS03-039) eller 823980 (MS03-026) på fjerncomputere

Support til Windows XP er ophørt

Microsoft ophørte med at yde support til Windows XP den 8. april 2014. Denne ændring har haft indflydelse på dine softwareopdateringer og sikkerhedsindstillinger. Se, hvad det betyder for dig, og hvordan du kan forblive beskyttet.

Support til Windows Server 2003 ophørte den 14. juli 2015

Microsoft afsluttede support til Windows Server 2003 den 14. juli 2015. Denne ændring har haft indflydelse på dine softwareopdateringer og sikkerhedsindstillinger. Se, hvad det betyder for dig, og hvordan du kan forblive beskyttet.

Sammenfatning
Artiklen indeholder et eksempel på et Microsoft Visual Basic Scripting Edition-script med navnet Patchinstall.vbs. Dette script er et eksempel på, hvordan en netværksadministrator kan bruge VMI-scriptfiler (Windows Management Instrumentation) til at installere sikkerhedsopdatering 824146 (MS03-039) eller 823980 (MS03-026) på fjerncomputere, hvor opdateringen ikke er installeret i et Microsoft Windows NT-, Windows 2000- eller Windows Server 2003-domænemiljø. Patchinstall.vbs-scriptet bruger en fil (IP_fil.txt), som indeholder IP-adresser som input og installerer sikkerhedsopdatering 824146 (MS03-039) eller 823980 (MS03-026) fra en kendt placering på fjerncomputeren (C:\Patchinst.exe). Yderligere oplysninger om sikkerhedsopdateringen 824146 (MS03-039) får du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
824146 MS03-039: Bufferoverløb i RPCSS kan tillade en angriber at køre skadelige programmer
Yderligere oplysninger om sikkerhedsrettelse 823980 finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
823980 MS03-026: Bufferoverløb i RCP-grænseflade kan tillade kørsel af programkode
Yderligere oplysninger om et værktøj, som netværksadministratorer kan bruge til at scanne netværket for at finde de computere, der ikke har disse sikkerhedsopdateringer installeret, får du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
827363 Sådan bruges KB 824146-scanningsværktøjet til at finde værtscomputere, hvor sikkerhedsopdateringerne 823980 (MS03-026) og 824146 (MS03-039) ikke er installeret (artiklen er evt. på engelsk)

Bemærk!

  • Du skal have administrative rettigheder på fjerncomputerne for at kunne installere sikkerhedsopdatering 824146 eller 823980 korrekt.
  • Microsoft Windows XP-baserede destinationscomputere skal være sluttet til et Windows NT-, Windows 2000- eller Windows Server 2003-domæne, for at Patchinstall.vbs-scriptet kan anvendes korrekt.
  • Patchinstall.vbs-scriptet bruger WMI (Windows Management Instrumentation). WMI er afhængig af DCOM (Distributed Component Object Model). Og derfor fungerer Patchinstall.vbs ikke på destinationscomputere, hvor DCOM er deaktiveret for at omgå den svaghed, der er behandlet i Microsoft-sikkerhedsbulletinen MS03-039 eller MS03-026.
  • Pakken med sikkerhedsopdatering 824146 eller 823980 skal være placeret i en lokal mappe på den computer, hvor du kører Patchinstall.vbs-scriptet, og pakkerne skal omdøbes til Patch_XP.exe (til Windows XP), Patch_W2K.exe (til Windows 2000) og Patch_W2K3.exe (til Windows Server 2003).
  • Du kan redigere Patchinstall.vbs-scriptet for at installere andre opdateringer.
Yderligere Information
Patchinstall.vbs-scriptet udfører følgende:
  • Scriptet læser en liste over IP-adresser til de fjerncomputerne, hvor sikkerhedsopdateringen 824146 eller 823980 skal installeres. Scriptet får listen fra en ASCII-tekstfil (IP_fil.txt), der indeholder en liste over IP-adresser (en IP-adresse pr. linje). Du kan f.eks. bruge logfilen Vulnerable.txt fra scanningsværktøjet KB824146 til filenIP_fil.txt .
  • Scriptet henter den første IP-adresse på listen.
  • Scriptet afgør, hvilken Windows-version der er på destinationscomputeren.
  • Scriptet knytter drev Z på scriptcomputeren til C$ på destinationscomputeren.
  • Scriptet kopierer den korrekte version af opdateringen (til Windows XP, Windows 2000 eller Windows Server 2003) til C:\Patchinst.exe på destinationscomputeren (ved hjælp af drev Z-tilknytningen).
  • Scriptet forårsager, at opdateringen installeres, og at destinationscomputerne derefter genstartes automatisk uden brugerinput eller dialogbokse ved at benytte parametrene -q -f (fuldautomatisk installationstilstand).
  • Scriptet venter på, at installationen fuldføres.
  • Scriptet forsøger at slette filen C:\Patchinst.exe på destinationscomputeren.
  • Scriptet fjerner drev Z-tilknytningen.
  • Scriptet behandler den næste IP-adresse på listen.
Vigtigt! Microsoft anbefaler, at du redigerer dette scripteksempel, så det passer til dit netværksmiljø, og at du derefter afprøver det i et testmiljø, inden du bruger det i et produktionsmiljø.

Hvis du vil benytte scriptet Patchinstall.vbs, skal du indsætte følgende script i en tekstfil med navnet Patchinstall.vbs. Derefter skal du køre scriptet Patchinstall.vbs ved hjælp af følgende kommando:
cscript patchinstall.vbs IP_fil.txt LokalStiTilOpdateringer
I denne kommando erIP_fil.txt en tekstfil, der indeholder en liste over IP-adresser til de fjerncomputerne, hvor sikkerhedsopdateringen 824146 eller 823980 skal installeres. LokalStiTilOpdateringer er den fuldstændige sti til den mappe, hvor pakken med sikkerhedsopdatering 824146 eller 823980 er placeret (omdøbt til Patch_XP.exe til Windows XP, Patch_W2k.exe til Windows 2000 og Patch_W2k3.exe til Windows Server 2003).

Scriptet Patchinstall.vbs

Microsoft leverer kun programmeringseksempler som illustration – uden nogen form for garanti, det være sig udtrykkelig eller stiltiende. Dette omfatter, men er ikke begrænset til, det stiltiende ansvar for salgbarhed eller egnethed til bestemte formål. Det forudsættes i denne artikel, at du kender ovennævnte programmeringssprog samt de værktøjer, der anvendes til at oprette og foretage fejlfinding i procedurer. Microsofts supportmedarbejdere kan hjælpe med at forklare funktionaliteten i en bestemt procedure, men vil ikke ændre eksemplerne, så de giver yderligere funktionalitet, eller oprette procedurer, der passer specielt til dine behov.
' 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
Egenskaber

Artikel-id: 827227 – Seneste udgave 08/09/2005 15:36:51 – Udgave 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
Feedback
t" src="https://c.microsoft.com/ms.js">