Windows 7对程序的禁运与解禁
2017-11-23
最近笔者在Windows 7系统运行中发现,以往那些应用程序有的能够正常运行,有些则被系统禁运了! 这是为什么呢?经过研究学习终于明白。
有些应用在Windows 7下为何被禁运
有些应用程序在Windows 7下无法启动,这种情形其实在Windows Vista中已有所表现,这是由于Vista系统内核采取了名为WFP(Windows File Protection)的文件保护机制所致,出于安全考虑系统改动了有关文件的 ACL (允许访问列表),仅仅对于所谓TrustedInstaller级别的用户给予文件的全权访问,而在Windows 7中这种保护机制进一步加强,出现了所谓 WRP(Windows Resource Protection),这种安全机制导致的后果之一就是让以往的有些应用程序出现与当前系统不兼容的症状,对此问题能解决吗?答案是肯定的。
图1 兼容栏目下拉列表
如何对禁运的应用解禁
为此,首先不妨了解清楚哪些应用在Windows 7被禁运,具体查看方式为:打开“控制面板”后点击“程序”栏目,点击名为“Run programs made for previous version of Windows”的超链接,然后扩展“高级”选项并取消自动修复选项,点击“下一步”;浏览所有程序,找到希望运行的那个程序,比如某个Windows XP系统补丁包,点击“下一步”按钮后会出现系统提示信息,但老实说这些信息对于我们解决这一问题很难有多少帮助,但是为了让该程序能够重新启用,可以将其设置为兼容模式。其具体操作方式为:右击该程序后从属性菜单中切换到兼容栏目,然后从下拉列表中选择旧的操作系统即可,如图1所示。
如何对未被禁运的应用进行禁用设置
我们在实际工作中还会遇到相反的情形,即:对于有些应用,虽然Windows 7允许它们正常运行,但是出于具体工作尤其是安全要求,希望将它们禁运,此时我们同样能够办到。实现方法就是通过活动目录的软件约束策略SRP(software restriction policy),需要指出的是SRP针对的是机器而并非用户。为此我们打开组策略编辑器“gpedit.msc”后锁定以下选项:
现在需要新建一个策略,为此右点上述选项后 选 取“New Software Restriction Policies”选项,然后就会看到以下三级安全选项:
1.Disallowed——默认时不运行任何软件,只有例外软件可运行;
2.No software runs by Basic User——允许所有软件在没有管理员权限时也可运行;
3.Unrestricted—— 所有软件都可运行,除非指定某个软件不许运行。
此时右击第3个选项,选择其为默认方式。接着,我们需要进入规则设置环节去添加新规则,此时可以看到有如下四个规则选项:
1.Hash——勾选禁止的哈希列表;
2.Certificate——采用数字认证方式阻止应用程序运行;
3.Path——禁止全路径应用运行;
4.Zone——采用数据流方式查看文件下载来源,并禁止其直接显示相关信息。
这里我们选择第一种规则选项,即hash规则。我们不妨将系统允许正常运行的画图程序设置为禁运,为此点击浏览按钮找到如下程序:
当规则生效后,我们再次尝试运行画图程序时,就会遇到以下禁运信息,如图2所示。
图2 禁运信息
文末,笔者想要补充说明的是,有些恶意代码往往在系统启动之初就会运行,为了防止这种阴谋得逞,管理员往往通过运行工具命令“MSConfig”将某些不明程序加以禁用。但魔高一丈的是,有些恶意代码会在“MSConfig”启动栏中消失,但是却无法躲过注册表,其在注册表的具体位置如下所列:
其中,蜂巢HKEY_LOCAL_MACHINE指的是该机器上所有用户都会执行,而蜂巢HKEY_CURRENT_USER 表示只限当前用户可执行。