9

Есть ли какой-либо способ дифференцировать эти два окончательно?

Я понимаю, что могу искать панель задач или кнопку питания на начальном экране, но мне больше интересно знать, есть ли где-нибудь, что на самом деле отображает 8.1 обновление 1. Я знаю, что у MS есть эта страница, но программным способом ее обнаружения было бы неплохо, особенно с учетом того, что в последние ISO-файлы добавлено обновление.

Насколько я могу судить, выходные данные ver и wmic os одинаковы для Windows 8.1 и Windows 8.1. Обновление 1, и Свойства системы по-прежнему сообщает о Windows 8.1.

4 ответа4

6

Возможные решения

Ниже приведено несколько пакетных сценариев, которые могут проверить, является ли операционная система Windows 8.1 с KB2919355 или без. Код выхода будет одним из следующих:

  • 0: Windows 8.1
  • 1: Обновление Windows 8.1 (установлено KB2919355)
  • 2: не Windows 8.1

Пакетный скрипт A - проверка обновлений

Это самый надежный способ. Сначала скрипт проверяет, является ли операционная система Windows 8.1, сравнивая версию с 6.3.9600 . Затем запрашиваются все установленные обновления, чтобы проверить, было ли уже установлено обновление KB2919355.

@echo off

for /f "usebackq tokens=2 delims==" %%G in (
`wmic os get version /value ^| findstr /c:"="`
) do set version=%%~G

if not "%version%" == "6.3.9600" exit /b 2

wmic qfe get hotfixid | findstr /i /c:"KB2919355" >nul
set /a errorlevel=%errorlevel% ^^ 1

exit /b %errorlevel%

Пакетный скрипт B - Проверка версии сборки

В качестве альтернативы вы можете проверить версию сборки Windows, которая быстрее, чем первый скрипт, потому что вам не нужно перечислять все обновления. Поскольку он использует значение реестра, он может быть не таким надежным.

@echo off

for /f "usebackq tokens=2 delims==" %%G in (
`wmic os get version /value ^| findstr /c:"="`
) do set version=%%~G

if not "%version%" == "6.3.9600" exit /b 2

for /f "tokens=4 delims=. " %%G in (
'"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "BuildLabEx" | findstr /i /c:"REG_SZ" "'
) do set /a build=%%~G

if %build% geq 17031 exit /b 1
exit /b 0

Пакетный скрипт C - Проверка версии сборки (Internet Explorer)

Как и в предыдущем сценарии, здесь концепция аналогична, за исключением того, что вместо нее проверяется версия Internet Explorer (IE).

@echo off

for /f "usebackq tokens=2 delims==" %%G in (
`wmic os get version /value ^| findstr /c:"="`
) do set version=%%~G

if not "%version%" == "6.3.9600" exit /b 2

for /f "tokens=3,6 delims=. " %%G in (
'"reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v "svcVersion" | findstr /i /c:"REG_SZ" "'
) do set /a major=%%~G & set /a build=%%~H

if %major% equ 11 if %build% geq 17031 exit /b 1
if %major% geq 12 exit /b 1
exit /b 0

Примечание. В сценарии предполагается, что любая версия IE выше или равная 12 будет доступна в системе Windows 8.1 с установленным обновлением KB2919355.

Все будущие обновления для системы безопасности и безопасности для Windows RT 8.1, Windows 8.1 и Windows Server 2012 R2 требуют, чтобы это обновление было установлено. Мы рекомендуем установить это обновление на компьютер под управлением Windows RT 8.1, Windows 8.1 или Windows Server 2012 R2, чтобы получать дальнейшие обновления.

Источник: Windows RT 8.1, Windows 8.1 и Windows Server 2012 R2 Обновление: апрель 2014 г.

Учитывая вышесказанное, разумно думать, что любая более новая версия IE потребует обновления в качестве предварительного условия, точно так же, как SP2 требуется для установки IE 9 в Windows Vista.

3

Разобрать строку BuildLabEx

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr BuildLabEx

и если номер больше, чем 17031 у пользователей установлено обновление 1.

0

Мы используем утилиту командной строки под названием WuInstall (http://www.wuinstall.com), которая делает несколько полезных вещей в отношении исправлений, среди которых включение пакетных сценариев для проверки, установлены ли обновления

Командная строка, чтобы показать все установленные обновления

WUInstall.exe / поиск / критерии "IsInstalled = 1" / не в сети

Чтобы проверить, установлен ли определенный КБ (есть много вариантов фильтрации), вы можете проверить:

WUInstall.exe / поиск / критерии "IsInstalled = 1" / автономный режим / соответствие "KB982214"

Утилита выводит некоторую командную строку, которую можно перенаправить в файл xml с помощью параметра /xmlout или просто перенаправить в файл, например, с помощью> out.txt.

-1

Я просто проверяю папку "winstore" в Windows, так как заметил, что это явная разница во всех версиях Windows.

Можно даже запустить команду WinStore, чтобы увидеть это.

REM Имитация проверки ОС: Установите c: cd\, если существует "c:\windows\WinStore", перейдите в WIN8

:Win8 REM-специфичный код для машины win8

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .