我需要一个名为 Defender Control 的 Windows 应用程序的简单切换脚本
I need a simple Toggle script for Windows app called Defender Control
我正在使用这个名为 Defender Control 的应用程序。它与命令行开关 "DefenderControl.exe /D" 一起使用以禁用 Windows Defender 和 "DefenderControl.exe /E" 以启用 Windows Defender。我尝试创建和修改其他切换脚本,但我不能使一个工作。我对脚本知识知之甚少。我计划将其添加到右键单击上下文菜单中以快速禁用 Windows Defender,而无需启动应用程序然后禁用它。提前致谢。
DefenderControl.exe /D
DefenderControl.exe /E
这会将状态写入备用数据流(技术上它是一个文件,但绑定到批处理文件),因此状态在重新启动后仍然存在:
@echo off
REM get current status:
<"%~f0:status" set /p status=
echo Currently: %status%
if "%status%"=="D" (
defendercontrol.exe /E
echo E>"%~f0:status"
) else (
defendercontrol.exe /D
echo D>"%~f0:status"
)
对于第一个运行,状态为空,处理方式与E
一样(转到else
分支)
使脚本从上下文菜单中运行的解决方案是提升它。
@echo off
CLS
ECHO.
:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
REM get current status:
<"%userprofile%\defendercontrol.status" set /p status=
echo Currently: %status%
if "%status%"=="D" (
defendercontrol.exe /E
echo E>"%userprofile%\defendercontrol.status"
) else (
defendercontrol.exe /D
echo D>"%userprofile%\defendercontrol.status"
)
我正在使用这个名为 Defender Control 的应用程序。它与命令行开关 "DefenderControl.exe /D" 一起使用以禁用 Windows Defender 和 "DefenderControl.exe /E" 以启用 Windows Defender。我尝试创建和修改其他切换脚本,但我不能使一个工作。我对脚本知识知之甚少。我计划将其添加到右键单击上下文菜单中以快速禁用 Windows Defender,而无需启动应用程序然后禁用它。提前致谢。
DefenderControl.exe /D
DefenderControl.exe /E
这会将状态写入备用数据流(技术上它是一个文件,但绑定到批处理文件),因此状态在重新启动后仍然存在:
@echo off
REM get current status:
<"%~f0:status" set /p status=
echo Currently: %status%
if "%status%"=="D" (
defendercontrol.exe /E
echo E>"%~f0:status"
) else (
defendercontrol.exe /D
echo D>"%~f0:status"
)
对于第一个运行,状态为空,处理方式与E
一样(转到else
分支)
使脚本从上下文菜单中运行的解决方案是提升它。
@echo off
CLS
ECHO.
:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
REM get current status:
<"%userprofile%\defendercontrol.status" set /p status=
echo Currently: %status%
if "%status%"=="D" (
defendercontrol.exe /E
echo E>"%userprofile%\defendercontrol.status"
) else (
defendercontrol.exe /D
echo D>"%userprofile%\defendercontrol.status"
)