Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как узнать какой антивирус на компе и еще пару вещей :) (http://forum.oszone.net/showthread.php?t=142842)

mitiya 17-06-2009 12:46 1144968

как узнать какой антивирус на компе и еще пару вещей :)
 
Суть вот в чем:
Пишу скриптик небольшой для небольшой инвентаризации :)

Хочу знать собрать следующую информацию:
Название операционной системы - есть в реестре знаю где
Версия сервис пака - тоже в реестре тоже знаю

Наличие офиса и его версию - наверно есть где-то в реестре но не знаю где точно

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

Брендмауэр - тоже что и по поводу антивира

Вроде все.

Если кто знает где в реестре искать , или может есть какая команда для этого, буду очень признателен.

amel27 17-06-2009 14:39 1145058

антивирус, офис, файервол - все это приложения, и никто не мешает на одну машину установить несколько разных офисов и антивирусов, какой из них тогда выбирать?.. ИМХО один выход - перебирать все возможные и определять - установлен или нет, и если да, то какая версия... чтобы не париться с реестром, лучше использовать WMI Installer Provider

пример CMD-команды, выводящей список установленного софта и его параметры:
Код:

WMIC Product Get /Value
P.S. описание класса: http://msdn.microsoft.com/en-us/libr...,printer).aspx

Petya V4sechkin 17-06-2009 14:55 1145074

amel27, к сожалению, Win32_Product воспринимает только msi.

mitiya, пример получения полного списка установленных программ по этой ссылке (InstalledApplications).

Medic84 17-06-2009 15:06 1145088

Цитата:

Цитата mitiya
Хочу знать собрать следующую информацию:
Название операционной системы - есть в реестре знаю где
Версия сервис пака - тоже в реестре тоже знаю »

Что бы отобразить значение реестра используется REG QUERY

Код:

REG QUERY (путь) /v (значение)
Если путь имеет где то пробелы, то его нужно заключать в кавычки

Остальные ф-ии прочитай сам :)

Код:

Reg /?

amel27 17-06-2009 16:20 1145181

Цитата:

Цитата Petya V4sechkin
пример получения полного списка установленных программ »

это понятно, но как из этой ветки реестра выдернуть версию?

mitiya 17-06-2009 17:21 1145229

Medic84, это все я зная , тут проблемы нет , просто для полноты картины написал.

Цитата:

Цитата amel27
антивирус, офис, файервол - все это приложения, и никто не мешает на одну машину установить несколько разных офисов и антивирусов, какой из них тогда выбирать? »

ну что касается офисов то я говорил в данном случае о MS офисе. а версия это 2003 или 2007, наличие сервис паков не критично.

А по поводу антивируса, я все же склонен считать что эти приложения как то отмечаются в системе ибо например центр обеспечения безопасности мне пишет в графе защита от вредоносных программ - nod , брендмауэр - smart security.

Cibersoft Prolex 17-06-2009 20:06 1145350

mitiya
Ошибка в шапке
Цитата:

Цитата mitiya
как узнать какой онтивирус на компе и еще пару вещей :) »


Medic84 17-06-2009 21:25 1145425

Цитата:

Цитата mitiya
ну что касается офисов то я говорил в данном случае о MS офисе. а версия это 2003 или 2007, наличие сервис паков не критично.
А по поводу антивируса, я все же склонен считать что эти приложения как то отмечаются в системе ибо например центр обеспечения безопасности мне пишет в графе защита от вредоносных программ - nod , брендмауэр - smart security. »

На твоем бы месте я бы сделал все на условии Если
Если существует такой-то ключ реестра допустим (HKLM\Software\Eset\Nod) то выводит его версию и т.п. А если нет то пропускает, и так с любым. Проблема только в том что придется все в ручную забивать(все антивирусы и т.п.)

mitiya 17-06-2009 22:07 1145457

Medic84, в том то и дело что не хочется перебирать все, не говоря уже о том что придется все эти антивирусы ставить и смотреть какой ключ они создаю.
Если винда как-то узнает какой антивирус стоит, то лучше всего этой возможностью воспользоваться. Очень сомневаюсь что винда перебирает все антивирусы по такому же принципу.

Iska 18-06-2009 02:43 1145625

Конкретно про антивирус и фаерволл: если ОС знает о них, то и Вы можете узнать вот так посредством WMI (пример на WSH/VBScript; проверялось на Windows XP SP3 Professional: ниже SP2 работать не будет, выше — теоретически возможно, но не проверялось):
Код:

Option Explicit

Dim objSWbemServicesEx

Dim collSWbemObjectSet_AntiVirusProduct
Dim objSWbemObjectEx_AntiVirusProduct

Dim collSWbemObjectSet_FireWallProduct
Dim objSWbemObjectEx_FireWallProduct


Set objSWbemServicesEx = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter")


Set collSWbemObjectSet_AntiVirusProduct = objSWbemServicesEx.ExecQuery("SELECT * From AntiVirusProduct")

If collSWbemObjectSet_AntiVirusProduct.Count <> 0 Then
    For Each objSWbemObjectEx_AntiVirusProduct In collSWbemObjectSet_AntiVirusProduct
        With objSWbemObjectEx_AntiVirusProduct
            WScript.Echo .CompanyName, .DisplayName, .VersionNumber, "is", .productUpToDate
        End With
    Next
Else
    WScript.Echo "Not found AntiVirus Products"
End If

Set collSWbemObjectSet_AntiVirusProduct = Nothing


Set collSWbemObjectSet_FireWallProduct = objSWbemServicesEx.ExecQuery("SELECT * From FireWallProduct")

If collSWbemObjectSet_FireWallProduct.Count <> 0 Then
    For Each objSWbemObjectEx_FireWallProduct In collSWbemObjectSet_FireWallProduct
        With objSWbemObjectEx_FireWallProduct
            WScript.Echo .CompanyName, .DisplayName, .VersionNumber
        End With
    Next
Else
    WScript.Echo "Not found FireWall Products"
End If

Set collSWbemObjectSet_FireWallProduct = Nothing

WScript.Quit 0

Естественно, «правильные» антивирус или фаерволл должны «сообщать» о своём присутствии, иначе экземпляры этих классов будут отсутствовать.

Update: поскольку выше речь косвенно шла вроде как о пакетных файлах, то приведу описанный функционал и для них (посредством WMIC):
Код:

wmic.exe /Node:. /NameSpace:\\Root\SecurityCenter Path AntiVirusProduct Get CompanyName, DisplayName, VersionNumber, productUpToDate
wmic.exe /Node:. /NameSpace:\\Root\SecurityCenter Path FireWallProduct Get CompanyName, DisplayName, VersionNumber


mitiya 18-06-2009 22:37 1146310

Iska, спасибо все работает.

А что это за зверь такой этот wmic , и откуда он данные берет , не уж то не из реестра ?

Vadikan 19-06-2009 00:34 1146397

Цитата:

Цитата mitiya
А что это за зверь такой этот wmic »

Начальные сведения можно почерпнуть из прикрепленной темы Полезные ресурсы по скриптовым языкам администрирования

mitiya 20-06-2009 14:43 1147524

По поводу офиса еще.
Появилась следующая идея:
Проверять ассоциацию *.doc и от сюда брать то какой офис используется.
Но тут как всегда пара проблем, в реестре doc не напрямую ассоциируется с приложением, а через Word.Document.8
и я просто подозреваю, что в случает например с опенофисом ключи будут другие.
Может кто знает консольную прогу, которая выведет сразу приложение ассоциируемое с данным расширением ?
А так же способ получить версию exe .

Iska 20-06-2009 16:11 1147567

Что-то наподобие такого:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "tokens=2 delims==" %%i in ('assoc .doc') do set strDocType=%%i
for /f "tokens=2 delims==/" %%i in ('ftype %strDocType%') do set strApp=%%i
for /f "tokens=1,2 delims=        " %%i in ('filever.exe /v %strApp% ^| findstr /i "CompanyName ProductName ProductVersion"') do set %%i=%%j

echo Company Name:    %CompanyName%
echo Product Name:    %ProductName%
echo Product Version: %ProductVersion%

endlocal
exit /b 0

читать дальше »
Замечания:
  • в «for /f "tokens=1,2 delims= " %%i in ('filever.exe /v…» после «delims=» и перед «" %%i» должен быть символ табуляции;
  • «filever.exe» берётся из комплекта «Support Tools». Я брал из комплекта «Windows Server 2003 Service Pack 2 32-bit Support Tools», но работает и с родным пакетом из инсталляционного диска («\SUPPORT\TOOLS\SUPTOOLS.MSI»). В принципе, можно использовать и другие утилиты, например ту же «sigcheck.exe» от бывшего Sysinternals.

mitiya 21-06-2009 00:05 1147838

Iska,

хотел использовать этот скрип так же для определения архиватора, но тут он не сработал. Все из-за разделителя во 2м for.
Мне вот интересно можно брать кусочки с конца а не с начала , или хотя бы получить общее их число чтоб взять нужный ?

amel27 22-06-2009 09:23 1148718

может так?
Код:

@Echo Off

For /F "Tokens=2 Delims==" %%i In ('Assoc .rar') Do Set strDocType=%%i
For /F "Tokens=2 Delims==" %%i In ('FType %strDocType%') Do Call :GetVars %%i

Echo Company Name  : %CompanyName%
Echo Product Name  : %ProductName%
Echo Product Version: %ProductVersion%
Echo File Version  : %FileVersion%

Exit /B 0

:GetVars
 For /F "Tokens=5 Delims=        " %%i In ('FileVer "%~1"') Do Set FileVersion=%%i
 For /F "Tokens=1* Delims=        " %%i In ('FileVer /v "%~1"^|FindStr /IBRC:"        [a-z][a-z]*        "') Do Set %%i=%%j
GoTo :EOF


mitiya 23-06-2009 10:58 1149610

у меня вот еще такой вопрос.
Нельзя ли wmic задать какой-нибудь разделитель, а то я пытаюсь выцепить с помощью for /f из
Код:

companyName          displayName              productUptoDate  versionNumber 
ESET, spol. s r. o.  ESET Smart Security 3.0  TRUE            3.0

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

amel27 23-06-2009 11:26 1149629

mitiya, используйте ключ /Value
Код:

WMIC /NameSpace:\\Root\SecurityCenter Path AntiVirusProduct Get CompanyName,DisplayName,VersionNumber,productUpToDate /Value

mitiya 23-06-2009 11:40 1149642

amel27, ох спасибо

mitiya 25-06-2009 00:54 1151103

на 2003м сервере выдало вот что

Код:

ОШИБКА:
Код = 0x8004100e
Описание = Недопустимое пространство имен
Услуга = WMI

что это означает, и как с этим бороться :) ?

amel27 25-06-2009 09:08 1151196

Цитата:

Цитата mitiya
на 2003м сервере выдало вот что »

хех, так там и нет "Центра уравления" :), используй класс Product или реестр

mitiya 25-06-2009 10:04 1151243

я так понимаю эти способы не позволят точно определить антивирус , необходим перебор ?

еверест кстати в 2003м без проблем показал антивирус, все же есть подозрение что он не перебором его вычислил.


Время: 09:49.

Время: 09:49.
© OSzone.net 2001-