Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, Уважаемые Гуру!

Тема очень старая, но может моя информация окажется полезной. В Windows 7 удалось получить часть информации через WMIC. Часть информации через обращение к реестру недоступна, например, при вызове *.bat - файла из-под Total Commander (например, поле CSDVersion раздела HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion). Работает такая схема (на примере получения названия ОС):

Код: Выделить весь код
SET WMICPS=OS
SET WMICPARAM=Caption

FOR /F "delims=" %%a in ('WMIC %WMICPS% GET /FORMAT:LIST ^| FIND /i "%WMICPARAM%"') do ( FOR /F "tokens=1 delims==" %%b in ("%%a") do (IF "%%b"=="%WMICPARAM%" FOR /F "tokens=2 delims==" %%c in ("%%a") do (SET PARAMVOL=%%c)))
где WMICPS - раздел WMIC, WMICPARAM - имя параметра, PARAMVOL - получаемое значение параметра. Второй цикл проверяет полное ли соответствие заданного имени параметра найденной строке, например, для полей Name. Правда, поле Name раздела OS содержит дополнительную строку со спецсимволами, поэтому название ОС пришлось брать по Caption.
Среди прочего по такой схеме:
WMICPARAM=OSArchitecture - архитектура ОС
WMICPARAM=CSDVersion - версия сервис-пака ("" - без сервис-пака).

WMIC также можно использовать для быстрого определения наличия нужного обновления. У меня сработало с использованием временного файла по схеме:

Код: Выделить весь код
SET KBLOG=C:\KB.log
WMIC QFE LIST >> %KBLOG%
1>NUL FINDSTR "KB2598845" %KBLOG% || GOTO :Code_If_Installed

Отправлено: 22:53, 27-01-2018 | #70