前言
为什么要限制程序运行?
比如家长不希望小孩玩游戏;
老板不希望员工使用某些软件;
拦截广告程序;
限制恶意软件运行,提高系统安全性等等。。
限制方法一
在运行中打入:gpedit.msc

打开组策略编辑器,定位到 用户配置->管理模板->系统:

在右侧窗口中,有两个选项分别是:不运行指定的Windows应用程序、只运行指定的Windows应用程序
很容易理解,一个黑名单模式,一个白名单模式。使用方法也很简单,以“不运行指定的Windows应用程序”为例,双击打开,选择“已启用”:

点击下方的“显示...”,然后输入不允许运行的程序名即可限制运行:

但是这种方式功能太弱,仅仅只是针对程序名称,稍微懂点电脑的改一下文件名就绕过了限制。很多时候难以满足需求。。
限制方法二
同样是通过组策略编辑器来设置,但是位置不一样,定位到:计算机配置->Windows设置->安全设置->软件限制策略:

如果之前没有创建过策略,默认是什么都没有的,在“软件限制策略”上点击右键,选择“创建软件限制策略:

点击之后,会创建出一些默认策略:

点击“其他规则”,然后在右侧窗口的空白处点击右键:

如上图所示,可以根据程序的证书、哈希值、网络区域、路径等来创建限制规则!
这样大大加强了限制的效果,不是简单改名就能破除限制!随机命名的程序也可以轻松限制!
这里不做详解,就以新建路径规则为例,稍微演示一下功能的使用:

如上图,路径支持使用%temp%这样的环境变量,也支持*.exe这样的通配符!
上图这条规则,将会限制系统临时文件夹下所有后缀名为.exe的程序运行。
运行效果如图:

需要注意的是,像我这样写,并不会连同子目录下的程序一起限制!
如果要连同所有子目录下的程序一起限制,可以这样写:

限制方法三
这是一种特殊的限制方式,虽然功能也不强,但仍是值得一提,它叫:映像劫持
在运行或者CMD中输入:
例1,点击qq.exe时提示找不到文件:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\qq.exe" /v debugger /t reg_sz /d bucunzai.exe /f效果如图:

例2,点击qq.exe时,打开cmd.exe:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\qq.exe" /v debugger /t reg_sz /d cmd.exe /f当然,也可以把cmd.exe换成其它指定位置的程序,比如 D:\soft\test.exe
这个映像劫持是不是还有点好玩?