简易Windows桌面锁,自带关屏幕功能自己一直对批处理有浓厚兴趣,觉得这种机器语言即容易学又方便,所以一直想用它来做一个程序,奋斗了2晚上,做了这么一个的简易Windows桌面锁,自带关屏幕功能
现在将源码公布,欢迎大家来使用!
其中有4点编程想法需要向大家说明一下:
1、采用临时密码,即在程序开始时输入一个密码,退出时验证密码。过程中将密码赋予一个变量A,再取随机数变量B,用A*B得到变量C,将B、C保存在一个临时的.INI文件中,需要密码时再还原出来,同时删除.INI文件。这样就不会保留你的任何密码信息,其他人就算查看源码也不知道你曾经常用的密码。(虽然可以直接将密码存在变量中,但本源码中考虑供新手学习批处理读取文档的方法故这样做;而且这样做可以防止保存密码的变量发生未知错误,而导致无法解锁。)
2、使用2个批处理同时运行,以确保关屏幕功能能够不受主批处理的影响自动循环关屏幕。我在输入密码后而创建一个文本文档,用来标记关屏幕程序可以开始工作,又导出一个新的次批处理,以用来任何情况下都每10秒关屏幕一次,以防止因用户移动鼠标键盘而导致屏幕长亮;而当用户输入密码正确后,主批处理会删除文本文档,用来告诉次批处理,停止关屏幕。然后主批处理删除次批处理,且结束CMD.EXE进程(如果不结束进程,次批处理窗口不会关闭,主批处理也会因建立了Explorer进程而不自动退出。)
3.在这个版本中,用Quick Batch File将CloseLCD合并入了批处理中,也取消了快捷方式的创建,使得程序仅是一个exe文件,使用起来更加方便和随意,可以随意重命名和移动位置。
4.加入了终止Taskmgr.exe(任务管理器)进程方法(自动建立一个循环终止Taskmgr.exe进程的批处理,在用户输入正确密码后删除本身。),使得无法在任务管理器中新建explorer进程,不过令人遗憾的是,可以用Alt+Tab切换到这个批处理,关闭它,从而可以用任务管理器新建explorer进程,不知道有谁有好方法,可以在不影响用户输入密码的同时又循环结束Taskmgr.exe进程,我自己也在考虑这个问题。
下面是源码(不附带CloseLCD.exe程序),因为不能上传,所以我给个连接下载 桌面锁.exe 程序和单独的关屏幕程序。- @echo off
- title Windows桌面锁
- color 3f
- mode con cols=70 lines=17
- cls
- goto code
- :start
- cls
- del ms.txt>nul
- del ColseLCD.bat>nul
- del config.ini>nul
- del ColseLCD.exe>nul
- del killtaskmgr.bat>nul
- echo
- echo 欢迎您再次使用,再见。
- echo.
- start explorer.exe
- taskkill /f /im cmd.exe>nul
- exit
- :run
- echo .>ms.txt
- taskkill /f /im explorer.exe>nul
- echo @echo off>ColseLCD.bat
- echo title ColseLCD>>ColseLCD.bat
- echo :top>>ColseLCD.bat
- echo IF EXIST ms.txt (goto colse) ELSE (goto exit)>>ColseLCD.bat
- echo :colse>>ColseLCD.bat
- echo ping /n 9 127.0.0.1>nul>>ColseLCD.bat
- echo ColseLCD.exe>>ColseLCD.bat
- echo goto top>>ColseLCD.bat
- echo :exit>>ColseLCD.bat
- echo exit>>ColseLCD.bat
- echo :top>killtaskmgr.bat
- echo taskkill /f /im taskmgr.exe>nul>>killtaskmgr.bat
- echo ping /n 1 127.0.0.1>nul>>killtaskmgr.bat
- echo goto top>>killtaskmgr.bat
- start /min ColseLCD.bat
- start /min killtaskmgr.bat
- goto login
- :code
- cls
- echo 欢迎使用,Windows桌面锁!
- echo.
- echo 本程序允许在非商业用途下复制、传播和修改,请在不妨碍使用的情况下注明版权信息。
- echo 作者:羅什麽
- echo 邮箱:mosesleo@sina.com
- echo -------------------------------------------
- echo 输入密码后将锁定桌面。
- set /p g=请输入一个密码(仅数字且小于8位):
- set /a p1=%random%%%1000
- set /a key=%g%*%p1%
- echo [UserDate]>config.ini
- echo 00 34624002>>config.ini
- echo 01 %p1%>>config.ini
- echo 02 %key%>>config.ini
- goto run
- :login
- cls
- echo 系统已锁定,10秒后关闭显示器。如果你忘记密码只能重启,但会丢失正在运行且未保存的信息。
- set aa=error
- set /p aa=请输入密码解锁:
- for /f "eol=[ tokens=1,2" %%i in (config.ini) do Set C%%i=%%j
- set /a code=%C02%/%C01%
- IF NOT "%code%"=="%aa%" (
- echo 密码错误,3秒后返回。
- echo
- ping /n 3 127.0.0.1>nul
- goto login
- ) ELSE (
- goto start
- )
复制代码
下载地址:http://bbs.verybat.org/viewthread.php?tid=19278&extra=page%3D1
[ 本帖最后由 asesinol 于 2009-10-8 01:04 编辑 ] |