2016-09-15 62 views
1

是否有任何方法检查是否安装了任何防病毒软件,然后卸载它以将其替换为通过批处理文件安装的防病毒软件?自动检测是否从批次安装了防病毒程序

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

感谢您的任何帮助。

+0

只是好奇:你会用它来做什么? 我理解你的问题是这样的:有迹象表明安装的软件是防病毒软件,我可以搜索(基本上)? 你已经说过的一般是检查已安装的程序。将它与包含更流行的防病毒软件的文本文件结合起来,并搜索那些带有循环的文件。如果你选择这种方式,你必须准确地把你放在文本文件中。 – geisterfurz007

+0

@ geisterfurz007这就是我期待的答案,我只是想知道是否有更简单的方法。问题的关键在于,我们在McAfee过期版本(预安装试用版)中安装了大量计算机,并且在安装Service Pack时,在安装包期间抛出错误而不是稍后当您有两个防病毒软件它出在你的注册表中(它变得相当混乱,随处可见的错误无处不在)。 – Cjen1

+0

所以你想检查电脑是否有这个老迈克菲,如果是这样你想先卸载它/中止已启动的安装,然后运行一个独立的安装程序为您的新的?这应该是可能的(尽管我不知道如何,但我相信别人会这样做)。 – geisterfurz007

回答

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你必须做以下(只有一次完成批处理文件):通过 去将注册表编辑器(regedit)携手自己的钥匙

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

的32位软件或

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

的64位软件。

现在通过键并查找DisplayName键。一直努力,直到找到合适的人。然后看看UninstallString。 将其复制并放置,而不是注释行。

再次:这没有测试,我希望另一个更有经验的用户在测试机上进行确认/测试。

1

您可以通过此批处理文件启动,以获取有关您的操作系统和防病毒安装了一些信息:

@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%" 
-2

或许能来检查他们的目录,如下所示:

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

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