下面是完整代码:
------------------------------------
@echo off
:begin
color 9e
SETLOCAL
rem 活动代码页设为中文
chcp 936>nul 2>nul
echo.
rem 加载……
rem 先对流氓程序进行无条件运行限制
if exist StopRigue.exe StopRigue.exe
if exist UnActiveX.reg regedit /s UnActiveX.reg
:CHKS
echo.
rem 检测操作系统版本
ver|find "2000" > nul 2>nul
if "%ERRORLEVEL%"=="0" goto :2000
ver|find "XP" > nul 2>nul
if "%ERRORLEVEL%"=="0" goto :xp2k3
ver|find "Microsoft Windows [版本 5" > nul 2>nul
if "%ERRORLEVEL%"=="0" goto :XP2k3
echo.
echo 对不起,本程序仅支持 Windows 2000/XP/2003。
goto end
rem 判断操作系统并分配策略操作命令
:2000
set UpdatePolicy=secedit /refreshpolicy machine_policy>nul 2>nul
goto compatible
:XP2k3
set UpdatePolicy=GPUpdate /Force>nul 2>nul
goto compatible
:compatible
rem 设置FS变量,假定为NTFS
set FS=NTFS
rem 检测系统分区文件系统类型
CACLS %SystemRoot% | find "SYSTEM"> nul 2>nul
rem 如果检测到NTFS格式
if "%ERRORLEVEL%"=="0" goto maketmp
:fat
cls
rem 如果不是NTFS则将变量设置为FAT
set FS=FAT
rem 以突出颜色显示以提请注意
color 4f
echo.
echo 注意您的系统分区没有采用 NTFS 文件系统,因此不能对系统目录进行保护!
echo.
echo 是否现在就开始将系统分区转换为 NTFS 文件系统?
set /p CONVERT= 请选择(Y/N):
if /I "%CONVERT%"=="y" goto CONVERT
if /I "%CONVERT%"=="n" goto begin
if "%CONVERT%"=="" goto fat
rem 如果是其他输入则返回
goto fat
:CONVERT
rem 这里转换系统分区为 NTFS
echo.
echo 确定转换后,请重新启动计算机,然后重新运行本程序!
convert %SystemDrive% /FS:NTFS /V
pause>nul
rem 转换后退出
goto end
:maketmp
rem 兼容性准备
if not exist %SystemRoot%\Lastgood\nul md %SystemRoot%\Lastgood>nul 2>nul
if not exist %SystemRoot%\comsetup.log echo .>%SystemRoot%\comsetup.log>nul 2>nul
rem 测试TEMP是否存在并试图先修复
md %SystemRoot%\TEMP>nul 2>nul
if not exist %SystemRoot%\TEMP goto fixtemp
goto start
:start
rem 状态检测
set syss=系统目录:未保护
set pros=程序目录:未保护
set diypros=自定义目录:未保护
set regacl=注册表入口:未保护
cacls %SystemRoot%|find "Everyone:(DENY)">nul
if "%errorlevel%"=="0" set syss=系统目录:已固化
cacls "%ProgramFiles%"|find "Everyone:(DENY)">nul
if "%errorlevel%"=="0" set pros=程序目录:已固化
rem 自定义目录固化提示,应该选用全局变量(首页界面支持的全局变量)
cacls %obj%|find "Everyone:(DENY)">nul
if "%errorlevel%"=="0" set diypros=自定义目录:已固化
rem 单独判断注册表入口是否固化
setacl -on HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run -ot reg -actn list|find "deny">nul
if "%errorlevel%"=="0" set regacl=注册表入口:已固化
rem 文件访问变量参数
rem 禁止Everyone所有权限
set AllDeny=-ot file -actn ace -ace "n:Everyone;m:deny;p:full;i:sc"
rem 禁止添加子目录,不包含子文件夹
set NoAddSubdir=-ot file -actn ace -ace "n:Everyone;m:deny;p:add_subdir,write_dacl,write_owner;i:np"
rem 允许添加子文件夹,不包含子文件夹
set AddSubdir=-ot file -actn ace -ace "n:Everyone;m:deny;p:add_subdir,write_dacl,write_owner;i:np"
rem 禁止添加子目录,包含子文件夹
set NoAddSubdirs=-ot file -actn ace -ace "n:Everyone;m:deny;p:add_subdir,write_dacl,write_owner;i:sc"
rem 允许添加子文件夹,包含子文件夹
set AddSubdirs=-ot file -actn ace -ace "n:Everyone;m:grant;p:add_subdir,write_dacl,write_owner;i:sc"
rem 禁止添加文件,不包含子文件夹
set NoAddFile=-ot file -actn ace -ace "n:Everyone;m:deny;p:add_file,write_dacl,write_owner;i:np"
rem 允许添加文件,不包含子文件夹
set AddFile=-ot file -actn ace -ace "n:Everyone;m:grant;p:file,write_dacl,write_owner;i:np"
rem 禁止添加文件,包含子文件夹
set NoAddFiles=-ot file -actn ace -ace "n:Everyone;m:deny;p:add_file,write_dacl,write_owner;i:sc"
rem 允许添加文件,包含子文件夹
set AddFiles=-ot file -actn ace -ace "n:Everyone;m:grant;p:add_file,write_dacl,write_owner;i:sc"
rem 禁止服务
set SRV= -ot reg -actn ace -ace "n:Everyone;m:grant;p:set_val,write_dacl,write_owner;i:np"
set SERV= -ot srv -actn ace -ace "n:Everyone;m:grant;p:full;i:sc"
color 9e
cls
SET Choice=
echo.
echo 系统固化设置向导 深山红叶制作 分区格式:%FS%
echo -------------------------------------------------------------
echo.
echo 本工具用于固化干净的系统,以免除各种病毒木马及恶意程序的感染。
echo.
echo 【注意】
echo ①安装新软件时如果出错,请先临时取消系统和程序目录固化!
echo ②本程序不能替代杀毒软件,请确保要安装的程序干净无害!
echo.
echo [1] 简单固化系统(允许向系统目录植入文件,不允许新建文件夹)
echo [2] * 强力固化系统(推荐!不允许向系统目录植入文件和新建文件夹)
echo [3] 取消系统固化
echo -------------------------------------------------------------
echo [4] * 固化程序目录(不允许向 Program Files 新建文件夹)
echo [5] 取消程序目录固化
echo -------------------------------------------------------------
echo [6] * 自定义固化程序目录(不允许向 自定义目录 新建文件夹)
echo [7] 取消自定义固化(允许子目录 需要指定自定义目录)
echo -------------------------------------------------------------
echo [8] * 单独固化注册表自动加载入口
echo [9] 取消注册表自动加载入口的固化 [Q] 退出
echo -------------------------------------------------------------
echo 当前状态- %syss% %pros%
echo 当前状态- %diypros% %regacl%
echo.
echo.
SET /P Choice= 请选择要进行的操作:
echo %Choice%|find /i ":" && goto :start
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
if /i "%choice%"=="" GOTO back
IF /I '%Choice%'=='1' GOTO low
IF /I '%Choice%'=='2' GOTO power
IF /I '%Choice%'=='3' GOTO undo
IF /I '%Choice%'=='4' GOTO program
IF /I '%Choice%'=='5' GOTO unprogram
IF /I '%Choice%'=='6' GOTO diyfile
IF /I '%Choice%'=='7' GOTO undiyonefile
IF /I '%Choice%'=='8' GOTO regprotect
IF /I '%Choice%'=='9' GOTO unreg
IF /I '%Choice%'=='q' GOTO back
GOTO Start
:back
if exist main.cmd call main.cmd
:unreg
echo.
rem 取消注册表保护……
rem 以下是供取消保护用的变量
set ACT= -ot reg -actn ace -ace "n:Everyone;m:grant;p:create_subkey,set_val"
rem 取消以登录或注销脚本形式自动加载恶意程序的防范
set ACTS= -ot reg -actn ace -ace "n:Everyone;m:grant;p:set_val"
rem 取消拒绝访问注册表项的变量,是专针对恶性程序的
set ACTDeny= -ot reg -actn ace -ace "n:Everyone;m:grant;p:full"
rem 取消系统服务创建控制变量
set SRV= -ot reg -actn ace -ace "n:%USERNAME%;m:grant;p:set_val;i:sc,so"
rem 取消阻止创建新服务(仅当前账户)
set SERV= -ot srv -actn ace -ace "n:Everyone;m:grant;p:full;i:sc"
goto regdo
:low
rem fixtemp
if not exist %SystemRoot%\TEMP\nul cacls %SystemRoot% /E /C /R everyone>nul 2>nul
if not exist %SystemRoot%\TEMP\nul md %SystemRoot%\TEMP>nul 2>nul
echo.
rem 设置系统,可能需要几分钟,请稍候……
rem Windows 目录
rem 保护当前目录,禁止创建目录/文件,允许复制写入文件,不包含子目录
setacl -on %SystemRoot% %NoAddSubdir%>nul 2>nul
rem System32 目录
rem 禁止创建目录/文件,允许复制写入文件,包含子目录
setacl -on %SystemRoot% %NoAddSubdirs%>nul 2>nul
goto free
:power
rem fixtemp
color 9e
cls
echo.
echo.
echo 固化系统目录前,请先安装好所有必需的应用程序和硬件驱动!
echo 固化系统后,某些应用程序及硬件驱动可能无法安装!!!!!
echo.
echo 请检查:声卡、显示卡、打印机、扫描仪、MP3 等设备的驱动
echo 是否已经安装妥当!Office 等应用程序是否安装完毕!
echo.
SET /P Choice= 是否继续执行固化?请选择(Y/N):
IF /I '%Choice%'=='Y' GOTO protectsys
IF /I '%Choice%'=='N' GOTO start
IF /I '%Choice%'=='' GOTO power
:protectsys
if not exist %SystemRoot%\TEMP\nul cacls %SystemRoot% /E /C /R everyone>nul 2>nul
if not exist %SystemRoot%\TEMP\nul md %SystemRoot%\TEMP>nul 2>nul
echo.
rem 设置系统,可能需要几分钟,请稍候……
rem 保护系统根目录
setacl -on %SystemDrive%\ %NoAddFile%>nul 2>nul
rem Windows 目录
rem 保护当前目录及子目录
setacl -on %SystemRoot% %NoAddSubdir%>nul 2>nul
setacl -on %SystemRoot% %NoAddFiles%>nul 2>nul
rem 保护旧式配置文件
setacl -on %SystemRoot%\win.ini %NoAddFile%>nul 2>nul
setacl -on %SystemRoot%\system.ini %NoAddFile%>nul 2>nul
rem 保护公用启动组
setacl -on "%SystemDrive%\Documents and Settings\All Users\「开始」菜单\程序\启动" %NoAddFile%>nul 2>nul
rem 保护当前用户启动组
setacl -on "%USERPROFILE%\「开始」菜单\程序\启动" %NoAddFile%>nul 2>nul
goto free
:regprotect
rem 备份注册表
rem 如果当日已经有备份则跳过,以保持当日原始备份
if exist %SystemRoot%\ERDNT\%DATE%\ERDNT.EXE goto regpt
if exist %SystemRoot%\ERDNT\AUTOBACK.EXE goto backupreg
goto regpt
:regpt
echo.
echo 正在设置注册表保护……
rem 如果是取消保护则跳转
rem 保护注册表自动运行入口
rem 设置动作参数变量以简化内容
set ACT=-ot reg -actn ace -ace "n:Everyone;m:deny;p:create_subkey,set_val"
rem 防范以登录或注销脚本形式自动加载恶意程序的
set ACTS= -ot reg -actn ace -ace "n:Everyone;m:deny;p:set_val"
rem 拒绝访问注册表项的变量
set ACTDeny=-ot reg -actn ace -ace "n:Everyone;m:deny;p:full"
rem 系统服务创建控制变量
set SRV= -ot reg -actn ace -ace "n:%USERNAME%;m:deny;p:set_val;i:sc,so"
rem 阻止创建新服务(仅当前账户)
set SERV= -ot srv -actn ace -ace "n:Everyone;m:grant;p:full;i:sc"
goto regdo
rem 阻止创建新服务(仅当前账户)
rem setacl -on "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" %SRV%>nul 2>nul
rem setacl -on "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" %SRV%>nul 2>nul
rem 刷新本地安全策略以便立即生效
%UpdatePolicy%>nul 2>nul
echo 系统设置完毕,任意键返回……
Pause>nul
goto start
rem 以下暂时不启用
:firewall
echo 系统防火墙策略固化
cls
color 4f
echo.
echo 系统防火墙的通行策略可能会被一些恶意程序自动修改。
echo 固化防火墙策略前请一定要先手工检查防火墙通行策略的可靠性!
echo 强烈建议启用防火墙,并一一运行常用的网络程序后再进行固化!
SET /P Choice= 请选择要进行的操作
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
IF /I '%Choice%'=='1' GOTO fireset
IF /I '%Choice%'=='Q' GOTO start