从非特权用户命令行中找出Windows版本

时间:2011-12-05 17:27:41

标签: windows cmd

我需要一种方法,使用简单的命令行工具(没有powershell)找出我正在运行的Windows版本。我需要它来自非特权用户,我需要能够解析Windows XP,Vista,Server 2008和7之间的差异。我目前正在使用: wmic os get Caption但是当用户没有运行wmic的权限时失败。

更新 为了澄清,我需要这个命令不要破坏不同的服务包级别等,这可能会排除解析特定的版本号。此外,如果您查看Windows版本的this list,您会看到Windows 7和Server 2008 r2上报告的数字是相同的。

6 个答案:

答案 0 :(得分:17)

我通过解析输出:

解决了这个问题
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"

答案 1 :(得分:11)

systeminfo命令显示操作系统版本的所有内容,包括服务包编号和您正在使用的版本。

C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name:                   Microsoft Windows 7 Enterprise
OS Version:                6.1.7601 Service Pack 1 Build 7601    

参考:Find Windows version from command prompt

答案 2 :(得分:4)

您可以使用ver。我在学校计算机上使用非特权命令提示符,它给了我Microsft Windows [Version 6.1.7601]。我相信你能从你获得的数字中挑选出Vista和XP。

答案 3 :(得分:4)

cmd在启动时显示Windows版本:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Joey>_

这也是一个与ver吐出的行相似的行。

一个选项可能是

echo exit|cmd|findstr Windows

另一个

cmd /c ver

取决于您是否有管道。

答案 4 :(得分:2)

if not CMDEXTVERSION 2 (
  echo Error: This batch requires Command Extensions version 2 or higher
  exit /b 1
)

FOR /F "usebackq tokens=4 delims=] " %%I IN (`ver`) DO for /F "tokens=1,2 delims=." %%J IN ("%%I") do set WindowsVersion=%%J.%%K
if "%WindowsVersion%" LSS "6.1" (
  echo Error: This batch requires Windows 7 SP1 or higher
  exit /b 1
)

答案 5 :(得分:0)

您可以获取SysInternals并安装到C:\目录中。之后,您可以转到命令提示符并使用命令PSINFO。

这很棒,因为它可以让我查询网络上的任何PC(我有权访问)。在命令提示符下键入:PSINFO \ exactnameofcomputer

(PSINFO重击计算机的确切名称)

然后按回车键。报告需要一两个小时,具体取决于计算机所在的位置。