Como diferenciar o Windows 8.1 Update 1 do Windows 8.1?

9

Existe alguma maneira de diferenciar esses dois definitivamente?

Sei que posso procurar uma barra de tarefas ou um botão liga / desliga na tela Iniciar, mas estou mais interessado em saber se existe algum lugar que realmente exiba o 8.1 Update 1. Sei que o MS tem essa página , mas uma maneira programática de detectá-la seria legal, especialmente porque as ISOs mais recentes têm a atualização incorporada.

Até onde eu sei, a saída vere wmic osa mesma entre o Windows 8.1 e o Windows 8.1. Atualização 1 e as propriedades do sistema ainda reporta o Windows 8.1.

Ernie
fonte
11
Você não Você deve verificar se a base de conhecimento específica do Windows Update "Update 1" está instalada. Não tenho o número à mão, está bem documentado.
Ramhound
2
@ Ramhound Isso funciona apenas para sistemas que foram atualizados a partir do 8.1. . . Os ISOs no MSDN agora são o Windows 8.1 com Update e não têm o Windows Update em seu histórico. . .
Ernie
2
@ and31415 a versão de compilação é relatada na versaída (6.3.9600) e é a mesma para ambas. O problema que estou tentando resolver é apenas saber quais sistemas temos em nosso laboratório e qual sistema operacional eles estão executando. . . para cobertura de teste completo, queremos manter ambos 8.1 e 8.1 com Update 1
ernie
2
@ and31415 Eu deveria ter sido mais explícito. As informações de versaída e registro são idênticas. O método wmic / findstr parece que funcionará (mesmo em sistemas que foram instalados a partir das novas ISOs), embora seja feio como o pecado (especialmente porque basicamente será uma verificação secundária após uma ververificação). . . postar isso como resposta e eu aceito. . .
Ernie
2
@ Ramhound Entendo que você não pode atualizá-lo, mas testamos o software aqui e, assim como temos usuários que ainda estão executando o XP sem service packs, assumimos que teremos usuários com 8.1 sem atualização. Precisamos de uma cobertura abrangente para garantir que nosso software funcione em todos os ambientes, e ter uma ampla variedade de sistemas é importante para nós.
Ernie

Respostas:

6

Soluções possíveis

Abaixo, há alguns scripts em lote que podem verificar se o sistema operacional é o Windows 8.1, com ou sem KB2919355 . O código de saída será um dos seguintes:

  • 0: Windows 8.1
  • 1: Atualização do Windows 8.1 (KB2919355 instalado)
  • 2: Não é o Windows 8.1

Script de lote A - verificação de atualização

Esta é a maneira mais confiável. O script primeiro verifica se o sistema operacional é o Windows 8.1, comparando a versão com 6.3.9600. Todas as atualizações instaladas são consultadas para verificar se a atualização KB2919355 já foi instalada.

@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%

Script em lote B - verificação da versão de compilação

Como alternativa, você pode verificar a versão de compilação do Windows, que é mais rápida que o primeiro script, porque você não precisa enumerar todas as atualizações. Como ele usa um valor do registro, pode não ser tão confiável.

@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

Script em lote C - verificação da versão de compilação (Internet Explorer)

Assim como o script anterior, aqui o conceito é semelhante, exceto que a versão do Internet Explorer (IE) é marcada.

@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

Nota O script pressupõe que qualquer versão do IE superior ou igual a 12 esteja disponível em um sistema Windows 8.1 com a atualização KB2919355 instalada.

Todas as futuras atualizações de segurança e não segurança do Windows RT 8.1, Windows 8.1 e Windows Server 2012 R2 exigem que esta atualização seja instalada. Recomendamos que você instale esta atualização no computador com Windows RT 8.1, Windows 8.1 ou Windows Server 2012 R2 para receber futuras atualizações continuadas.

Fonte: Windows RT 8.1, Windows 8.1 e Windows Server 2012 R2 Atualização: abril de 2014

Dado o exposto, é razoável pensar que qualquer versão mais recente do IE exigiria a atualização como pré-requisito, assim como o SP2 é necessário para instalar o IE 9 no Windows Vista .

and31415
fonte
11
Fico feliz que minha ideia de verificar a versão IE11 tenha sido uma solução possível.
Ramhound
@ Ramhound Melhorei o script antigo. Verificar a versão do IE tem algumas ressalvas e atualizei a resposta para esclarecer isso.
precisa
3

Analisar a BuildLabExsequência

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

e se o número for maior do que 17031os usuários têm a Atualização 1 instalada.

magicandre1981
fonte
BuildLabnão é atualizado; BuildLabExeé.
Jeroen Wiert Pluimers
@ magicandre1981 - Qual é exatamente o que esse script de consulta verifica.
Ramhound
A frase inicial fala sobre BuildLab. Meu comentário explica a diferença entre os dois, pois a Exparte de BuildLabExestá oculta na ampliação de texto padrão de 100% do script.
Jeroen Wiert Pluimers
0

Utilizamos um utilitário de linha de comando chamado WuInstall ( http://www.wuinstall.com ) que faz algumas coisas úteis sobre a aplicação de patches, entre elas a habilitação de scripts em lote para verificar se as atualizações estão instaladas

Linha de comando para mostrar todas as atualizações instaladas

WUInstall.exe / search / criterios "IsInstalled = 1" / offline

Para verificar se um determinado KB está instalado (existem muitas opções de filtragem), você pode verificar:

WUInstall.exe / search / critérios "IsInstalled = 1" / offline / correspondência "KB982214"

O utilitário produz alguma saída de linha de comando, que pode ser redirecionada para um arquivo xml com uma opção chamada / xmlout ou apenas redirecionada para um arquivo com, por exemplo,> out.txt

MacDonkey
fonte
-1

Simplesmente procuro uma pasta "winstore" no Windows, pois notei que há uma diferença flagrante em todas as versões do Windows.

Pode até executar o comando WinStore para vê-lo.

REM Simulando a verificação do SO: Instale c: cd \ se existir "c: \ windows \ WinStore" para WIN8

: Código específico do Win8 REM para uma máquina win8

PowerTrip
fonte
11
Eu estou supondo que você está dizendo que isso é para Windows8 e não para Windows 8. Esta questão foi especificamente para Win8.1 v. Win8.1 Atualização 1
ernie