自动检测是否从批处理安装了防病毒软件

时间:2016-09-15 10:52:12

标签: windows batch-file

有没有办法检查是否安装了任何防病毒软件,然后将其卸载以将其替换为通过批处理文件安装的防病毒软件?

我怀疑有,但我找不到任何关于此的信息(我知道我可以检查是否安装了程序,但我想知道是否有更好的方法)。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您可以从此批处理文件开始,以获取有关您的操作系统和防病毒软件的一些信息:

@echo off
Title General information about OS and Antivirus by Hackoo 2016
Mode con cols=50 lines=3
cls & color 0A & echo.
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
Set "TmpLogFile=%Tmp%\TmpLogkey.txt"
set "LogFile=%userprofile%\Desktop\%~n0_LogFile.txt"
If Exist %TmpLogFile% Del %TmpLogFile%
If Exist %LogFile% Del %LogFile%
REM  --> Check for permissions
Reg query "HKU\S-1-5-19\Environment" >%TmpLogFile% 2>&1
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo.
ECHO                        **************************************
ECHO                         Running Admin shell... Please wait...
ECHO                        **************************************

    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
::::::::::::::::::::::::::::
::          START         ::
::::::::::::::::::::::::::::
Echo.
Echo               Please wait a while .....
If Exist "%LogFile%" Del "%LogFile%"
(
    Echo  **************************** General info ****************************
    Echo Running under: %username% on profile: %userprofile%
    Echo Computer name: %computername%
    Echo Operating System:
    wmic os get caption | findstr /v /r /c:"^$" /c:"^Caption"
    Echo Boot Mode:
    wmic COMPUTERSYSTEM GET BootupState | find "boot"
    Echo Antivirus software installed:
    wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName | findstr /v /r /c:"^$" /c:"displayName"
    Echo Executed on: %date% @ %time%
    Echo  **************************** General info ****************************
)>"%LogFile%"

Start "" "%LogFile%"

答案 1 :(得分:2)

在研究了执行该操作所需的一些事项后,我想出了这个:

没有被测试!

@echo off
wmic product get name,version | findstr "McAfee">temp1.txt
set /p line=<temp1.txt
del temp1.txt
if "x%line%"=="x" (
   REM string is empty -> file is empty -> prgramm does not exist
   echo "No old McAfee installed"
   pause
   Goto :eof
) else (
   choice /m "Uninstall old one?"
   if %errorlevel%==1(
   REM PLACE HERE
   REM run installer
) else Goto :eof

)
pause

如果显示REM PLACE HERE,则必须执行以下操作(仅完成批处理文件一次): 转到注册编辑器(注册表)并自己完成按键

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载

用于32位软件或

  

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载

用于64位软件。

现在浏览密钥并查找DisplayName密钥。一直努力,直到找到合适的人。然后在UninstallString下查看。 复制并放置它而不是注释行。

再次:这未经过测试,我希望其他更有经验的用户在测试机上进行确认/测试。

答案 2 :(得分:-2)

可以像他们一样检查他们的目录:

if exist "C:\Program Files (x86)\Avast" (
echo Avast Is Installed!
)else echo Avast Not Installed

我不知道Avast安装在哪里,但这是我最好的猜测