我想知道怎样才能检查杀毒软件是否需要更新版本或所需的更新,或者是否需要使用CMD或批处理脚本才能正常工作?非常感谢。
发布于 2017-02-26 20:35:23
下面是一个监视productState
状态并将其转换为变量的示例脚本。我设法使它与我的特定AntiVirus一起工作,但是您的里程可能会根据您使用的不同而有所不同。
我使用了来自这里的这里二进制值,但是当您的AntiVirus更新、过时或禁用时,可以通过监视%byte1% %byte2% %byte3%
的值来轻松地更改这些值。
@echo off
wmic /namespace:\\root\SecurityCenter2 path AntiVirusProduct get * /value|findstr "displayName productState"
echo.
set /p dec=Enter productState decimal value to detect state:
call cmd /c exit /b %dec%
set "hex=%=exitcode%"
set "hex=%hex:~2%"
set "byte1=%hex:~0,2%"&set "byte2=%hex:~2,2%"&set "byte3=%hex:~4,2%"
:: Check byte1
set "status1=ANTIVIRUS"
if "%byte1%"=="00" set "status1=NONE"
if "%byte1%"=="01" set "status1=FIREWALL"
if "%byte1%"=="02" set "status1=AUTOUPDATE_SETTINGS"
if "%byte1%"=="04" set "status1=AVAST_ANTIVIRUS"
if "%byte1%"=="08" set "status1=ANTISPYWARE"
if "%byte1%"=="16" set "status1=INTERNET_SETTINGS"
if "%byte1%"=="32" set "status1=USER_ACCOUNT_CONTROL"
if "%byte1%"=="64" set "status1=SERVICE"
:: Check byte2
set "status2=UNKNOWN"
if "%byte2%"=="16" set "status2=RUNNING"
:: Check byte2
set "status3=UP-TO-DATE"
if "%byte3%"=="16" set "status3=OUT-OF-DATE"
if "%byte3%"=="32" set "status3=OUT-OF-DATE"
if "%byte3%"=="52" set "status3=OUT-OF-DATE"
if "%byte3%"=="58" set "status3=OUT-OF-DATE"
echo Type of antivirus : %status1%
echo Scanning status : %status2%
echo Virus definitions : %status3%
echo %byte1%
pause
当然,对特定AV使用专用命令行工具会更好,但这应该有效。
https://stackoverflow.com/questions/42473843
复制相似问题