**lock.bat**
```batch @echo off title 密码验证 SETLOCAL set pwd=0 set times=3 echo ________________________________________________________________________________ echo 您现在使用的是[Anlge]的CMD,没有经过[Angle]的允许不能执行任何命令, echo 您的这次使用的所有操作以及留言都已经记入日志,如果您还没有密码,那请与 echo [Angle]联系,已经有密码了请您输入密码! echo ________________________________________________________________________________ echo ####################################################################### >> e:\CMD\mylog.txt echo 操作: 激活密码验证 时间:%time% 日期:%date% >> e:\CMD\mylog.txt echo 状态: 等待验证…… >> e:\CMD\mylog.txt echo. >> e:\CMD\mylog.txt echo [ LOGIN ]:password set /p pwd= 请输入您的密码: set /A times=%times%-1 if %pwd%==fangzi goto pass echo ***** 密码验证错误,请您重新输入 您还有 %times% 次机会输入密码 ***** echo . if %times%==0 goto close echo 状态: 用户输入密码 验证失败 时间:%time% >> e:\CMD\mylog.txt goto password :close echo 状态: 用户3次输入密码错误 程序锁定 时间:%time% >> e:\CMD\mylog.txt title 对不起,您无法使用[Angle]的CMD echo -------------------------------------------------------------------------------- echo 由于您3次密码验证失败,程序已经被锁定,您已经无法继续操作,您可以选择关闭 echo 本窗口,您也可以通过留言来与[Angle]取得联系,输入留言后,请按回车提交! echo -------------------------------------------------------------------------------- echo [ MESSAGES ] :message echo ________________________________________________________________________________ set /p msg= 请输入您的留言: echo . >> e:\CMD\mymsg.txt echo ####################################################################### >> e:\CMD\mymsg.txt echo 日期:%date% 时间:%time% >> e:\CMD\mymsg.txt echo 留言内容: >> e:\CMD\mymsg.txt echo %msg% >> e:\CMD\mymsg.txt echo. >> c:\message.txt echo …… OK …… echo 您的留言已经记录,您可以选择关闭窗口也可以选择继续留言 echo 操作: 用户留言 时间:%time% >> e:\CMD\mylog.txt goto message :pass echo 状态: 程序已开放,欢迎使用 时间:%time% >> e:\CMD\mylog.txt title [Angle]的CMD ENDLOCAL ```粗看下来,几个关键点已经摆在这了:
- 密码硬编码:密码为 `fangzi`,直接写在脚本中,全部小写,存在安全隐患。
- 日志目录:所有操作均记录在 `E:\CMD\mylog.txt` 文件中。
- 留言功能:锁定后为用户提供留言通道,内容保存至 `E:\CMD\mymsg.txt`。
- 三次机会:经典的安全策略,连续三次密码错误即终止访问。
但这个脚本存在一个“致命伤”——对文件路径和目录的假设过于简单粗暴。例如,日志文件路径硬编码为 `e:\CMD\mylog.txt`,如果目标电脑没有E盘或该目录不存在,脚本将直接崩溃。此外,`%time%` 和 `%date%` 变量在不同Windows版本(如Win7/Win10)下的格式存在差异,直接记录可能导致乱码。
不过,对于想快速为CMD添加“门禁”的爱好者而言,这个模板完全够用。真正有价值的地方,并不在于脚本本身,而在于它构建的完整“安装-卸载”闭环。
**安装工具:setup.bat**
```batch @echo off copy /y lock.bat %windir%\lock.bat echo lock.bat安装成功 regedit /s lock.reg echo lock.reg注册成功 ```**卸载工具:unlock.reg**(为了跟安装脚本搭配,这里其实是批处理)
```batch @echo off del /f lock.bat %windir%\lock.bat echo lock.bat删除成功 regedit /s unlock.reg echo lock.reg反注册成功 ```看到了吧?真正的关键不在于`lock.bat`本身,而在于它如何被嵌入到系统启动或命令执行流程中。`lock.reg`和`unlock.reg`才是幕后推手。它们很可能修改了注册表,使CMD启动时自动执行`lock.bat`。而`setup.bat`完成两件事:将脚本复制到系统目录,并写入注册表键值。卸载脚本则执行相反操作。
**总结一下使用套路:**
- 双击 `setup.bat`,安装与激活一步完成。
- 此后任何人打开CMD,都会被 `lock.bat` 拦截,需输入密码 `fangzi`(注意大小写)才能继续操作。
- 连续三次输入错误即被锁定,仅能留言联系管理员。
- 如需移除,双击对应的 `unlock.bat`(注意:此处应为批处理文件,而非.reg)即可恢复原状。
最后补充一条实用经验:所有日志默认存放在 `E:\CMD\mylog.txt`,留言存放在 `E:\CMD\mymsg.txt`。如果要在自己的机器上使用,请务必先确认这两个路径是否存在且具有写入权限。
总的来说,这个脚本虽然看起来简陋,代码甚至有些粗糙,但对于理解Windows批处理、注册表应用以及早期系统安全思路,绝对是一份不错的参考资料。它也再次印证了一个道理:很多时候,安全不在于技术有多高明,而在于让你的工具遵循你的规则。
