批处理脚本来修复并开启Windows 7中的Windows Defender防火墙
@echo off
echo 修复并开启Windows Defender防火墙
:: 尝试停止Windows Firewall服务
echo 停止Windows Firewall服务...
net stop mpssvc /y
echo.
:: 尝试重新启动Base Filtering Engine服务
echo 启动Base Filtering Engine服务...
net start bfe
echo.
:: 启动Windows Firewall服务
echo 启动Windows Firewall服务...
net start mpssvc
echo.
:: 检查服务状态
echo 检查Windows Firewall服务状态...
sc query mpssvc | findstr /I /C:"RUNNING" && echo Windows Defender防火墙已成功启动 || echo 无法启动Windows Defender防火墙
echo 修复完成
pause
-
将文件另存为
修复防火墙.bat
。 -
右键点击保存的批处理文件
修复防火墙.bat
,然后选择“以管理员身份运行”。
运行此脚本后,它将尝试停止并重新启动Windows防火墙相关的服务,并验证防火墙服务是否已成功启动。
@echo off
echo 修复并开启Windows Defender防火墙
:: 尝试停止Windows Firewall服务
echo 停止Windows Firewall服务...
net stop mpssvc /y
echo.
:: 确保Base Filtering Engine服务正在运行
echo 确保Base Filtering Engine服务正在运行...
sc config bfe start= auto
sc start bfe
echo.
:: 确保Windows Defender防火墙服务设置为自动启动
echo 设置Windows Defender防火墙服务为自动启动...
sc config mpssvc start= auto
echo.
:: 尝试重新启动Windows Firewall服务
echo 启动Windows Firewall服务...
net start mpssvc
echo.
:: 检查服务状态
echo 检查Windows Firewall服务状态...
sc query mpssvc | findstr /I /C:"RUNNING" && echo Windows Defender防火墙已成功启动 || echo 无法启动Windows Defender防火墙
echo 修复完成
pause
说明:
- net stop mpssvc /y: 强制停止Windows Defender防火墙服务。
- sc config bfe start= auto: 将Base Filtering Engine服务设置为自动启动。
- sc start bfe: 启动Base Filtering Engine服务。
- sc config mpssvc start= auto: 将Windows Defender防火墙服务设置为自动启动。
- net start mpssvc: 启动Windows Defender防火墙服务。
- sc query mpssvc | findstr /I /C:"RUNNING": 检查Windows Defender防火墙服务是否正在运行。
这个批处理脚本尝试通过设置服务的启动类型为自动,并重新启动相关的服务来修复和启动Windows Defender防火墙。运行时,请确保以管理员身份运行批处理文件,以便执行系统级别的操作。
@echo off
setlocal enabledelayedexpansion
echo 修复并开启Windows Defender防火墙
:: Function to check service status
:check_service_status
set "SERVICE_NAME=%1"
sc query %SERVICE_NAME% | findstr /I /C:"RUNNING" >nul
if %errorlevel% equ 0 (
echo 服务 %SERVICE_NAME% 已启动
) else (
echo 服务 %SERVICE_NAME% 未启动,尝试启动...
net start %SERVICE_NAME%
if %errorlevel% equ 0 (
echo 服务 %SERVICE_NAME% 已成功启动
) else (
echo 无法启动服务 %SERVICE_NAME%
)
)
goto :eof
:: 停止Windows Defender防火墙服务
echo 停止Windows Defender防火墙服务...
net stop mpssvc /y
echo.
:: 确保Base Filtering Engine服务设置为自动启动并启动
echo 确保Base Filtering Engine服务正在运行...
sc config bfe start= auto
call :check_service_status bfe
echo.
:: 确保Windows Defender防火墙服务设置为自动启动
echo 设置Windows Defender防火墙服务为自动启动...
sc config mpssvc start= auto
echo.
:: 尝试重新启动Windows Defender防火墙服务
echo 启动Windows Defender防火墙服务...
call :check_service_status mpssvc
echo.
:: 确保Windows防火墙依赖的其他服务正在运行
echo 检查Windows防火墙依赖服务...
set DEP_SERVICES=RpcSs DcomLaunch PlugPlay
for %%s in (%DEP_SERVICES%) do (
call :check_service_status %%s
)
echo.
:: 使用系统文件检查工具修复系统文件
echo 使用系统文件检查工具修复系统文件...
sfc /scannow
echo.
:: 检查Windows Firewall服务状态
echo 检查Windows Defender防火墙服务状态...
sc query mpssvc | findstr /I /C:"RUNNING" >nul
if %errorlevel% equ 0 (
echo Windows Defender防火墙已成功启动
) else (
echo 无法启动Windows Defender防火墙
)
echo 修复完成
pause
说明:
- 函数
check_service_status
:用于检查并启动指定的服务。 - 停止防火墙服务:
net stop mpssvc /y
强制停止Windows Defender防火墙服务。 - 确保Base Filtering Engine服务自动启动并启动:
sc config bfe start= auto
和call :check_service_status bfe
。 - 确保Windows Defender防火墙服务自动启动:
sc config mpssvc start= auto
。 - 检查和启动Windows Defender防火墙服务:
call :check_service_status mpssvc
。 - 检查并启动其他依赖服务:例如
RpcSs
、DcomLaunch
和PlugPlay
。 - 系统文件检查:使用
sfc /scannow
命令修复系统文件。
批处理脚本来修复并开启Windows Defender防火墙,可以引入更多高级功能,如日志记录、错误处理、检查服务依赖关系等。下面是一个更全面和专业的示例:
batCopy Code
@echo off
setlocal enabledelayedexpansion
:: 日志文件路径
set LOGFILE=%~dp0firewall_repair_log.txt
:: 开启日志记录功能
(
echo ===============================
echo 开始修复并开启Windows Defender防火墙 - %date% %time%
echo ===============================
) >> %LOGFILE%
:: 函数:日志记录
:log
echo %~1
echo %~1 >> %LOGFILE%
goto :eof
:: 函数:检查服务状态并启动服务
:check_service_status
set "SERVICE_NAME=%1"
sc query %SERVICE_NAME% | findstr /I /C:"RUNNING" >nul
if %errorlevel% equ 0 (
call :log "服务 %SERVICE_NAME% 已启动"
) else (
call :log "服务 %SERVICE_NAME% 未启动,尝试启动..."
net start %SERVICE_NAME%
if %errorlevel% equ 0 (
call :log "服务 %SERVICE_NAME% 已成功启动"
) else (
call :log "无法启动服务 %SERVICE_NAME%"
)
)
goto :eof
:: 停止Windows Defender防火墙服务
call :log "停止Windows Defender防火墙服务..."
net stop mpssvc /y
call :log "防火墙服务已停止"
call :log ""
:: 确保Base Filtering Engine服务设置为自动启动并启动
call :log "确保Base Filtering Engine服务正在运行..."
sc config bfe start= auto
call :check_service_status bfe
call :log ""
:: 确保Windows Defender防火墙服务设置为自动启动
call :log "设置Windows Defender防火墙服务为自动启动..."
sc config mpssvc start= auto
call :log ""
:: 尝试重新启动Windows Defender防火墙服务
call :log "启动Windows Defender防火墙服务..."
call :check_service_status mpssvc
call :log ""
:: 确保Windows防火墙依赖的其他服务正在运行
call :log "检查Windows防火墙依赖服务..."
set DEP_SERVICES=RpcSs DcomLaunch PlugPlay
for %%s in (%DEP_SERVICES%) do (
call :check_service_status %%s
)
call :log ""
:: 使用系统文件检查工具修复系统文件
call :log "使用系统文件检查工具修复系统文件..."
sfc /scannow >> %LOGFILE%
call :log ""
:: 检查Windows Firewall服务状态
call :log "检查Windows Defender防火墙服务状态..."
sc query mpssvc | findstr /I /C:"RUNNING" >nul
if %errorlevel% equ 0 (
call :log "Windows Defender防火墙已成功启动"
) else (
call :log "无法启动Windows Defender防火墙"
)
call :log "修复完成"
:: 结束日志记录
(
echo ===============================
echo 修复结束 - %date% %time%
echo ===============================
) >> %LOGFILE%
pause
说明:
- 日志记录:脚本会将每个操作的输出记录到日志文件
%~dp0firewall_repair_log.txt
,该文件位于脚本所在目录。 - 函数
log
:用于简化日志记录过程。 - 函数
check_service_status
:扩展了服务检查与启动功能,并增加了日志记录。 - 停止防火墙服务:
net stop mpssvc /y
强制停止Windows Defender防火墙服务。 - 确保Base Filtering Engine服务自动启动并启动:
sc config bfe start= auto
和call :check_service_status bfe
。 - 确保Windows Defender防火墙服务自动启动:
sc config mpssvc start= auto
。 - 检查并启动Windows Defender防火墙服务:
call :check_service_status mpssvc
。 - 检查并启动其他依赖服务:例如
RpcSs
、DcomLaunch
和PlugPlay
。 - 系统文件检查:使用
sfc /scannow
命令修复系统文件,并将输出记录到日志文件中。
此脚本通过详细的日志记录、更加灵活的错误处理机制和全面的服务依赖检查,提升了修复和开启Windows Defender防火墙的可靠性和可追溯性。运行时,请确保以管理员身份运行批处理文件,以便执行系统级别的操作。