有没有什么方法可以明确区分这两者?
我知道我可以在“开始”屏幕上查找任务栏或电源按钮,但我更想知道是否有任何地方实际显示 8.1 Update 1。我知道 MS 有这一页但是如果能有一种编程的方式来检测它会更好,尤其是最新的 ISO 已经包含了更新内容。
据我所知,Windows 8.1 和 Windows 8.1. Update 1 之间的ver
和的输出wmic os
相同,并且系统属性仍然报告 Windows 8.1。
答案1
可能的解决方案
下面是一些批处理脚本,可以检查操作系统是否是 Windows 8.1,是否带有KB2919355。退出代码将是下列之一:
0
:Windows 8.11
: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
笔记该脚本假定任何高于或等于 12 的 IE 版本都可以在安装了更新 KB2919355 的 Windows 8.1 系统上使用。
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 年 4 月
鉴于上述情况,我们有理由认为,任何较新的 IE 版本都需要更新作为先决条件,就像在 Windows Vista 上安装 IE 9 需要 SP2。
答案2
解析BuildLabEx
字符串
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr BuildLabEx
如果数量大于,则表示17031
用户安装了更新 1。
答案3
我们使用名为 WuInstall 的命令行实用程序 (http://www.wuinstall.com)可以做一些与修补相关的有用事情,其中包括启用批处理脚本来检查是否安装了更新
命令行显示所有已安装的更新
WUInstall.exe /搜索 /条件“IsInstalled=1”/离线
要检查某个 KB 是否已安装(有很多过滤选项),您可以检查:
WUInstall.exe /搜索/条件“IsInstalled=1”/离线/匹配“KB982214”
该实用程序会执行一些命令行输出,可以使用名为 /xmlout 的选项将其重定向到 xml 文件,或者直接重定向到文件,例如 >out.txt
答案4
我只是在 Windows 中检查了“winstore”文件夹,因为我注意到所有版本的 Windows 中都有明显的差异。
甚至可以运行命令 WinStore 来查看它。
REM 模拟操作系统检查:安装 c: cd\ 如果存在“c:\windows\WinStore”转到 WIN8
:Win8 REM特定于 win8 机器的代码