Jak odróżnić Windows 8.1 Update 1 od Windows 8.1?

9

Czy w ogóle istnieje możliwość ostatecznego rozróżnienia tych dwóch?

Zdaję sobie sprawę, że mogę poszukać paska zadań lub przycisku zasilania na ekranie startowym, ale bardziej interesuje mnie informacja, czy jest gdziekolwiek, który wyświetla 8.1 Aktualizacja 1. Wiem, że stwardnienie rozsiane ma tę stronę , ale programowy sposób jej wykrycia byłby miło, zwłaszcza, że ​​najnowsze ISO mają aktualizację.

O ile wiem, dane wyjściowe veri wmic ossą takie same między Windows 8.1 i Windows 8.1. Aktualizacja 1, a Właściwości systemu nadal zgłaszają system Windows 8.1.

ernie
źródło
1
Ty nie. Musisz sprawdzić, czy zainstalowano konkretną wiedzę Windows Update, którą jest „Aktualizacja 1”. Nie mam pod ręką numeru, który jest dobrze udokumentowany.
Ramhound
2
@Ramhound Działa tylko w przypadku systemów uaktualnionych z wersji 8.1. . . ISO w MSDN są teraz Windows 8.1 z Update i nie mają Windows Update w swojej historii. . .
ernie,
2
@ i31415 wersja kompilacji jest raportowana w danych verwyjściowych (6.3.9600) i jest taka sama dla obu. Problem, który próbuję rozwiązać, to po prostu wiedza, jakie systemy mamy w naszym laboratorium i jaki system operacyjny działają. . . dla pełnego pokrycia testowego chcemy zachować zarówno wersję 8.1, jak i 8.1 z aktualizacją 1
ernie
2
@ and31415 Powinienem był wyrazić bardziej otwarcie. Zarówno dane verwyjściowe, jak i informacje rejestru są identyczne. Wydaje się, że metoda wmic / findstr będzie działać (nawet na systemach, które zostały zainstalowane z nowych ISO), choć jest brzydka jak grzech (zwłaszcza, że ​​po versprawdzeniu będzie to po prostu dodatkowa kontrola). . . opublikuj to jako odpowiedź, a ja to zaakceptuję. . .
ernie
2
@Ramhound Rozumiem, że nie możesz go zaktualizować, ale tutaj testujemy oprogramowanie i podobnie jak w przypadku użytkowników, którzy nadal używają XP bez dodatków Service Pack, zakładamy, że będziemy mieć użytkowników z wersją 8.1 bez aktualizacji. Potrzebujemy kompleksowej ochrony, aby upewnić się, że nasze oprogramowanie działa we wszystkich środowiskach, a szeroka gama systemów jest dla nas ważna.
ernie

Odpowiedzi:

6

Możliwe rozwiązania

Poniżej znajduje się kilka skryptów wsadowych, które mogą sprawdzić, czy system operacyjny to Windows 8.1 z lub bez KB2919355 . Kod wyjścia będzie jednym z następujących:

  • 0: Windows 8.1
  • 1: Aktualizacja systemu Windows 8.1 (zainstalowana KB2919355)
  • 2: Nie Windows 8.1

Skrypt wsadowy A - Sprawdź aktualizację

To najbardziej niezawodny sposób. Skrypt najpierw sprawdza, czy system operacyjny to Windows 8.1, porównując wersję 6.3.9600. Następnie sprawdzane są wszystkie zainstalowane aktualizacje, aby sprawdzić, czy aktualizacja KB2919355 została już zainstalowana.

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

Skrypt wsadowy B - Kontrola wersji kompilacji

Alternatywnie można sprawdzić wersję kompilacji systemu Windows, która jest szybsza niż pierwszy skrypt, ponieważ nie trzeba wyliczać wszystkich aktualizacji. Ponieważ używa wartości rejestru, może nie być tak niezawodny.

@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

Skrypt wsadowy C - sprawdzanie wersji kompilacji (Internet Explorer)

Podobnie jak w poprzednim skrypcie, tutaj koncepcja jest podobna, z tym że sprawdzana jest wersja 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

Uwaga : Skrypt zakłada, że ​​każda wersja IE wyższa lub równa 12 będzie dostępna w systemie Windows 8.1 z zainstalowaną aktualizacją KB2919355.

Wszystkie przyszłe aktualizacje zabezpieczeń i niezwiązane z zabezpieczeniami dla systemów Windows RT 8.1, Windows 8.1 i Windows Server 2012 R2 wymagają zainstalowania tej aktualizacji. Zalecamy zainstalowanie tej aktualizacji na komputerze z systemem Windows RT 8.1, Windows 8.1 lub Windows Server 2012 R2, aby otrzymywać przyszłe aktualizacje.

Źródło: Windows RT 8.1, Windows 8.1 i Windows Server 2012 R2 Update: kwiecień 2014

Biorąc pod uwagę powyższe, uzasadnione jest przypuszczenie, że każda nowsza wersja IE wymagałaby aktualizacji jako warunku wstępnego, podobnie jak dodatek SP2 jest wymagany do zainstalowania IE 9 w systemie Windows Vista .

i31415
źródło
1
Cieszę się, że mój pomysł na sprawdzenie wersji IE11 był możliwym rozwiązaniem.
Ramhound
@Ramhound Poprawiłem stary skrypt. Sprawdzanie wersji IE ma pewne zastrzeżenia i zaktualizowałem odpowiedź, aby to wyjaśnić.
i31415
3

Analizuj BuildLabExciąg

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

a jeśli liczba jest większa niż 17031użytkownicy mają zainstalowaną aktualizację 1.

magicandre1981
źródło
BuildLabnie jest aktualizowany; BuildLabExejest.
Jeroen Wiert Pluimers
@ magicandre1981 - Dokładnie to sprawdza ten skrypt zapytania.
Ramhound
Pierwsze zdanie mówi o BuildLab. Mój komentarz wyjaśnia różnicę między nimi, ponieważ Exczęść BuildLabExjest ukryta w domyślnym 100% powiększeniu tekstu skryptu.
Jeroen Wiert Pluimers
0

Używamy narzędzia wiersza polecenia o nazwie WuInstall ( http://www.wuinstall.com ), które robi kilka użytecznych rzeczy związanych z łataniem, w tym umożliwia skryptom wsadowym sprawdzanie, czy aktualizacje są zainstalowane

Wiersz polecenia, aby wyświetlić wszystkie zainstalowane aktualizacje

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

Aby sprawdzić, czy określony KB jest zainstalowany (istnieje wiele opcji filtrowania), możesz sprawdzić:

WUInstall.exe / search / kryteria „IsInstalled = 1” / offline / match „KB982214”

Narzędzie wykonuje dane wyjściowe z wiersza poleceń, które można przekierować do pliku xml za pomocą opcji o nazwie / xmlout lub po prostu przekierować do pliku za pomocą np.> Out.txt

MacDonkey
źródło
-1

Po prostu sprawdzam folder „winstore” w systemie Windows, ponieważ zauważyłem, że jest to rażąca różnica we wszystkich wersjach systemu Windows.

Może nawet uruchomić polecenie WinStore, aby go zobaczyć.

REM Symulowanie kontroli systemu operacyjnego: Zainstaluj c: cd \ jeśli istnieje „c: \ windows \ WinStore” goto WIN8

: REM8 Kod specyficzny dla Win8 dla maszyny z Win8

PowerTrip
źródło
1
Zgaduję, że mówisz, że to dotyczy wersów Windows8 innych niż Windows 8. To pytanie dotyczyło w szczególności Win8.1 v. Win8.1 Update 1
ernie