Узнайте версию Windows из командной строки без привилегий

Мне нужен способ узнать, какую версию окон я запускаю, используя простые инструменты командной строки (без powershell). Мне нужно, чтобы он работал от не-привилегированного пользователя, и мне нужно разобрать разницу между Windows XP, Vista, сервером 2008 и 7. В настоящее время я использую: wmic os get Caption, но это не удается, если у пользователя нет разрешений для запуска wmic.

Update: Чтобы уточнить, мне нужна эта команда, чтобы не разорваться на разные уровни пакета обновления и т.д., Что, вероятно, исключает разбор определенного номера версии. Кроме того, если вы посмотрите этот список версий Windows, вы увидите, что номера, указанные в Windows 7 и сервере 2008 r2, совпадают.

Ответы

Ответ 1

Я решил эту проблему, разобрав вывод:

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"

Ответ 2

Команда

systeminfo показывает все о версии os, включая номер пакета обновления и версию, которую вы используете.

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    

Ссылка: Найти версию Windows из командной строки

Ответ 3

Вы можете использовать ver. Я нахожусь на школьном компьютере с непривилегированной командной строкой, и он дает мне Microsft Windows [Version 6.1.7601]. Я уверен, что вы сможете отсортировать Vista и XP по номеру, который вы получили.

Ответ 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

в зависимости от того, есть ли у вас конвейер или нет.

Ответ 5

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
)

Ответ 6

Вы можете получить SysInternals и установить в свой каталог C: \. После этого вы можете перейти в командную строку и использовать команду PSINFO.

Это здорово, потому что он позволяет мне запрашивать любой компьютер в сети (к которому у меня есть доступ). В командной строке введите: PSINFO\точное имя компьютера

(PSINFO whack whack точное имя компьютера)

Затем нажмите enter. Потребуется минут или два, чтобы отчитываться, в зависимости от того, где находится этот компьютер.