就在某天深夜,屋外电闪雷鸣风雨交加,台灯下我独自一人窝在沙发里捧着一本《鬼吹灯》。
正当我看到胡八一一众人等来到一座巨大的墓室门前时,忽然一阵急促的敲门声划破寂静传入了我的耳中。
哎呦我去,这么神奇吗?这特么是一本有声书啊!
这声音怎么如此的真实,仿佛就像是谁在敲我家门似的?
哎?等会儿!好像哪里有点不对劲啊!
就在我一愣神的功夫,急促的敲门声再次响起,我一个激灵从沙发上蹦了起来,书也从手中滑落,特么就是有人在敲我家门啊!
我心中埋怨,一边走近门口想透过猫眼先看个究竟,一边嚷道:“搞什么...鬼啊!”
刚才还理直气壮的我,突然间却倒吸一口冷气,这“鬼啊”二字也带上了颤音。
原来,当我从猫眼向外观瞧时,突然一道闪电划过,昏暗的楼道中我分明看到了一个满身泥水、灰头土脸、狼狈不堪的小男孩木木地站立在门外,手里还捧着一个包,正无助地朝我瞪着两只忧郁的大眼睛。
“妈耶,这谁啊?”,我大吃一惊,这时手机音乐突然响了起来,我心肝一颤跟着一蹦三尺高。
我自个差点没乐出来,心想啥时候我跳高成绩这么好了!
遂低头一看手机,原来是同一小区的某位住户打来的电话。
接完电话我才彻底明白,原来门外的小男孩是这位住户的孩子,是来找我帮忙看电脑的。
原来就在数天前,这位家长出差在外,如今被疫情阻隔无法回家,现在孩子又开学无望,明天急需使用电脑上网课,却发现无法正常打开浏览器等程序。
究其原因,是这位家长在离家之前怕孩子乱玩游戏,用了一个叫作 Simple Run Blocker
的程序将电脑上的程序给锁定了。
结果这大人回不来,孩子又急着用电脑,赶时间实在没办法了大晚上的这才想到我。
由于之前我们也认识,因此我二话没说立马将孩子让进屋里,一番安顿后我打开了他的电脑。
呃,这绕来绕去说了这么多,那到底怎么就不能打开程序了呢?
结果我这一研究不要紧,才发现问题的确没那么简单......
程序被锁定的现象
我这儿屁颠儿地随便打开了一个程序,却发现程序不不仅没有启动,反而是跳出一个错误提示。
本次操作由于这台计算机的限制而被取消。请与你的系统管理员联系。
啥情况?
这以前没见过啊,怎么有点像中了病毒木马呢?
经过我一番初步确认,电脑里的确没有什么病毒和木马,看来需要研究一下这位家长提到的 Simple Run Blocker
了。
可是我怎么找都找不到这个程序,后来才知道程序被删除了,怕熊孩子乱改。
这倒厉害了,程序删除了还能保证指定的应用程序无法启动!
最终我还是在 www.sordum.org
中找到了这款软件。
SimpleRunBlocker.zip (418K)
下载链接: https://pan.baidu.com/s/1yhUBBowEAslcCzksir0qlQ
提取码:
★扫码关注公众号, 发送【000927】获取阅读密码
Simple Run Blocker
介绍
Simple Run Blocker
简称 SRB
,是一款简易便携式免费软件,用于阻止应用程序启动。
通常这款程序主要是用来防止熊孩子乱用某些程序,或是其他一些需要防止应用程序被误启动的特殊情况(你懂的)。
SRB
的界面很简洁,操作也很方便。
如图,只需将目标应用程序拖放到窗口中即可将其加入到列表中。
或者按下加号 +
或 减号 -
来添加或删除应用程序,最后按下对勾保存使设置生效。
按下齿轮图标,弹出设置菜单。
其中我们可以在最初打开 SRB
时选择 Languages
,并选择 简体中文
可以使界面中文化。
在后面的下拉菜单中,我们可以有三种拦截选项。
分别是:
1 - 拦截不在列表中的所有程序
2 - 拦截列表中的程序
3 - 不拦截
SRB
大致具有两大功能,一是隐藏或锁定驱动器,就是 C
盘、 D
盘的看不见或干脆不让用,还有一个就是锁定应用程序,程序不给启动。
好,下面我们挨个分析分析。
隐藏或锁定驱动器
点击齿轮图标,在下拉菜单中选定 隐藏或锁定驱动器
。
首先,我们看一下 隐藏驱动器
功能。
如图,我们只要勾选相应的驱动器盘符,然后再点击应用即可。
同样,对于 锁定驱动器
功能,也是勾选相应的驱动器盘符,然后再点击应用即可。
这些操作是挺简单的,那它是怎么实现的呢?
随后我找到了注册表中如下路径相应的注册表项,揭开了这个秘密。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
其下有两个非常重要的注册表键:
NoDrives
- 隐藏磁盘NoViewOnDrive
- 禁止访问磁盘
这一看就是哥俩好,一个管隐藏,一个管禁止,虽然各司其职名字不完全一样,但用法是一样的。
他们都是 REG_DWORD
类型的键值,用二进制的数字来表示磁盘驱动器。
具体地说,就是磁盘驱动器的盘符从低到高,也就是从 A
到 Z
,分别用二进制数字来表示。
相应盘符位置的数字是0
表示显示或启用,数字是 1
则表示隐藏或禁用。
举例,只保留开启 C
、 D
盘,则可以这样表示:
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
因此将二进制转换成十六进制就是 0x3FFFFF3
。
另外,还有一个注册表键 NoDriveTypeAutoRun
是用来指定某些类型的设备是否禁止自动播放功能。
设备分为很多不同的类型,分别用不同的数字指代,通常如下。
1
-DRIVE_UNKNOWN
不能识别的类型4
-DRIVE_REMOVABLE
可移动磁盘8
-DRIVE_FIXED
硬盘10
-DRIVE_REMOTE
网络驱动器20
-DRIVE_CDROM
光驱40
-DRIVE_RAMDISK
RAM
驱动器80
- 未知类型FF
- 所有类型
如果我们要禁止某一类型设备自动播放,那么直接使用对应的值即可。
如果要禁止多个类型的设备,则将指代它们的数值相加即可。
比如:
95 = 1+4+10+80
是指不能识别的类型
+可移动磁盘
+网络驱动器
+未知类型
91=1+10+80
是指不能识别的类型
+网络驱动器
+未知类型
b5=1+4+10+20+80
是指不能识别的类型
+可移动磁盘
+网络驱动器
+光驱
+未知类型
当然,自动播放并不是这里的重点,重点是前面那两个。
拦截应用程序
SRB
拦截的方式有两种(不拦截不算),一个是拦截列表中的程序,还一个是相反的,拦截不是列表中的程序。
通常我们是要将需要拦截的程序放到列表中,因此拦截方式我们会选择 2 - 拦截列表中的程序
。
那么这种操作也是非常简单,但它又是什么原理呢?
同样,还是前面说到的注册表项,我们往里边找找。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
当我们设定 SRB
拦截应用程序时,Explorer
项的下面就多出了几个没见过的键。
出现了三个新的注册表键:
BlockRunList
DisallowRun
RestrictRun
这三个注册表键是谁派来的?他们又是啥来头?
先看看 DisabllowRun
(拦截列表中的程序)
这个注册表键 DisallowRun
,看字面意思就是不让执行,只要它的值是 1
就会起作用。
一旦 DisallowRun
起作用,以下注册表路径(也就是 Explorer
下一级的 DisallowRun
项)中所列出的项目就会被拦截禁止。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
注意,其中被拦截应用程序的注册表键名可以是任意的,但键值才是关键不能写错哦!
再看看 RestrictRun
(拦截不在列表中的所有程序)
这个的意思正好和前面的相反,用来禁止绝大部分程序,这种反向操作要特别小心了,有可能会错误拦截了系统程序而导致系统崩溃。
相应的注册表键就是 RestrictRun
,只要它的值是 1
就起作用。
一旦 RestrictRun
起作用,以下注册表路径中的所列出的项目就会被拦截禁止。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun
注意,其中跳过应用程序的注册表键名是任意的,但键值才是关键不能写错哦!
小结
前面也说明得挺清楚了吧,即使没有这个 SRB
程序,我们也完全可以通过手动修改注册表来达到拦截应用程序的效果。
最后,至于 Explorer
项下还有一个名叫 BlockRunList
的注册表键,似乎应该是 SRB
这个程序自己创建的,用来自己保存程序列表。
绕过限制的方法
既然原理已经被我们掌握,同时也明白我们是可以通过手动修改注册表来实现与 SRB
同样的效果,那么接下来如何绕过限制也就变得易如反掌了。
很简单,我们还是通过手动修改注册表将策略关闭。
方法一,直接关闭限制开关,将 DisallowRun
和 RestrictRun
分别设置为 0
。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"RestrictRun"=dword:00000000
"DisallowRun"=dword:00000000
方法二,将限制列表中的相应程序名称重命名。
比如 DisallowRun
项中的程序列表,将其中你想要运行程序项的键值修改为其他名称。
又比如 RestrictRun
项中的程序列表,在其中添加你想要运行程序的名称。
注意,键名可以随意不一定是程序名称,但键值一定要是程序的完全文件名。
好了,手动修改注册表后,有可能不会立刻生效,那么我们可以用以下命令强制刷新策略就能快速生效而无须重启电脑。
gpupdate /force
方法三,文件重命名。
以上方法通过手动修改注册表可能略显麻烦,实际上还有一个极其简单而又变通的方法,那就是直接去重命名你想要执行的程序文件名。
哈哈,这么简单啊,我可真是个机灵鬼,因为 Simple Run Blocker
压根就管不了你重命名文件啊!
写在最后
经过前面的说明以及反复测试,可以说我们完全掌握了 Simple Run Blocker
的使用原理,那么我们完全也可以自己开发出这样一套简单实用的小程序。
虽然功能算不上有多强,但搞定一些熊孩子乱玩电脑还是可以用一用的。
我也正考虑能不能自己也写一个差不多的程序,想将这些功能整合到其他项目程序中。
可没有想到的是,自从送走了小男孩后没过几天,突然在我身边也发生了一件类似的麻烦事儿!
同样是将应用程序锁定,但不管我怎么搞都无法轻易地将其破解。
通过一番折腾之后我才彻底明白,原来与 SRB
完全不同,就算是重命名文件名称也不好使了!
哎?这是怎么回事呢?
难道我也碰上了更难缠的对手了?
这个与 SRB
不同的锁定程序到底是什么,而它又是怎么将程序锁定的,最后我有没有搞定它呢?
欲知后事究竟如何,请看下回分解!
扫码关注@网管小贾,阅读更多
网管小贾的博客 / www.sysadm.cc