В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Использование сценария visual basic для установки исправлений безопасности 824146 (MS03-039) и 823980 (MS03-026) на удаленных узлах сети

Поддержка Windows XP завершена

8 апреля 2014 г. корпорация Майкрософт прекратила поддержку Windows XP. Это повлияло на обновления программного обеспечения и параметры безопасности. Узнайте, что это значит для вас и какие меры по безопасности можно предпринять.

Поддержка Windows Server 2003 завершилась 14 июля 2015 г.

Корпорация Майкрософт завершила поддержку Windows Server 2003 14 июля 2015 г. Это повлияло на обновления программного обеспечения и параметры безопасности. Узнайте, что это значит для вас и какие меры по безопасности можно предпринять.

Аннотация
Данная статья содержит пример сценария Patchinstall.vbs на языке Microsoft Visual Basic Scripting Edition. Этот сценарий демонстрирует использование инструментария управления Windows (WMI) для установки исправлений безопасности 824146 (MS03-039) или 823980 (MS03-026) на удаленных компьютерах в доменах Microsoft Windows NT, Windows 2000 и Windows Server 2003. Сценарий Patchinstall.vbs получает данные из файла Ipfile.txt, который содержит IP-адреса, и устанавливает исправление безопасности 824146 (MS03-039) или 823980 (MS03-026) из заданного расположения на удаленный узел сети (C:\Patchinst.exe). Дополнительные сведения об исправлении безопасности 824146 (MS03-039) см. в следующей статье базы знаний Майкрософт:
824146 MS03-036: Переполнение буфера в RPCSS может допустить запуск враждебных программ
Дополнительные сведения об исправлении безопасности 823980 см. в следующей статье базы знаний Майкрософт:
823980 MS03-026: Переполнение буфера RPC может допустить запуск кода
За дополнительной информацией о средстве для сканирования сети и выявления компьютеров, на которых не установлены эти исправления безопасности, обратитесь к следующей статье базы знаний Майкрософт:
827363 Как с помощью средства сканирования, описанного в статье KB 824146, проверить, установлены ли на узлах сети исправления безопасности 823980 (MS03-026) и 824146 (MS03-039)

Примечания.

  • Для установки исправления безопасности 824146 или 823980 необходимо обладать правами администратора на удаленном компьютере.
  • Чтобы с помощью сценария Patchinstall.vbs установить исправления на удаленных компьютерах под управлением Microsoft Windows XP, они должны входить в состав домена Windows NT, Windows 2000 или Windows Server 2003.
  • В сценарии Patchinstall.vbs использован инструментарий управления Windows (WMI). Поскольку инструментарий зависит от распределенной объектной модели компонентов (DCOM), сценарий Patchinstall.vbs не работает на компьютерах, где модель DCOM отключена для временного устранения уязвимости, которая описана в бюллетенях Microsoft по безопасности MS03-039 и MS03-026.
  • Установочные пакеты исправлений безопасности 824146 и 823980 следует разместить в локальной папке на компьютере, где запускается сценарий Patchinstall.vbs, и переименовать их следующим образом: Patch_XP.exe (для Windows XP), Patch_W2K.exe (для Windows 2000) и Patch_W2K3.exe (для Windows Server 2003).
  • Сценарий Patchinstall.vbs можно изменить для установки других пакетов.
Дополнительная информация
Сценарий Patchinstall.vbs выполняет следующие действия.
  • Считывает IP-адреса удаленных узлов, на которых устанавливается исправление безопасности 824146 или 823980, из текстового файла Ipfile.txtв формате ASCII (содержащего один IP-адрес в каждой строке). Например, файл журнала Vulnerable.txt из средства сканирования KB824146 может быть использован для файла Ipfile.txt.
  • Сценарий извлекает из списка первый IP-адрес.
  • Определяет версию Windows, которая установлена на компьютере назначения.
  • Сопоставляет диск Z компьютера, на котором запускается сценарий, с диском C$ компьютера назначения.
  • Копирует соответствующую версию пакета исправления для Windows XP, Windows 2000 или Windows Server 2003 в папку C:\Patchinst.exe на компьютере назначения (используя подключение сетевого диска Z).
  • Инициирует установку пакета, а затем автоматически перезагружает компьютер назначения без вмешательства пользователя и вывода диалоговых окон с помощью параметров -q -f (автоматический режим установки).
  • Ожидает завершения установки.
  • Удаляет файл C:\Patchinst.exe на компьютере назначения.
  • Отключает сетевой диск Z.
  • Обрабатывает следующий IP-адрес в списке.
Внимание! Корпорация Майкрософт рекомендует изменить сценарий с учетом особенностей конкретной сети, протестировать в контрольном окружении и только после этого применять в рабочей среде.

Для использования сценария Patchinstall.vbs вставьте представленный ниже сценарий в текстовой файл Patchinstall.vbs и запустите его с помощью следующей команды:
cscript patchinstall.vbsIpfile.txt LocalPathToPatches
ГдеIpfile.txt – это текстовой файл, содержащий список IP-адресов удаленных компьютеров, на которых требуется установить исправление безопасности 824146 или 823980, а LocalPathToPatches – полный путь к папке, которая содержит пакет исправления безопасности 824146 или 823980 (переименованный в Patch_XP.exe для Windows XP, Patch_W2k.exe для Windows 2000 и Patch_W2k3.exe для Windows Server 2003).

Сценарий Patchinstall.vbs

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их пригодности для применения в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования и необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение тех или иных конструкций кода в конкретном примере, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.
' 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
Свойства

Номер статьи: 827227 — последний просмотр: 08/10/2005 18:15:56 — редакция: 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
Отзывы и предложения
);