Windows 管理

在安全环境中玩游戏

Matt Clapham

 

概览:

  • 写入受保护的文件夹和注册表项
  • 复制保护故障
  • 防火墙问题
  • 企业客户端问题

白天,我的工作是 Microsoft 安全方案经理。我还常常为 TechNet 杂志写一些安全性方面的文章。不用说,我非常重视安全问题。但是我也有其他的

爱好。在业余时间,我喜欢玩基于 Windows® 的游戏。其中最喜欢第一人称射击游戏、模拟游戏、角色扮演游戏和实时战略游戏。这里有个问题。和朋友 Jesper Johansson 和 Aaron Margosis 一样,除非绝对必要,否则我不会以管理权限运行。我之所以这么做,部分原因是为了确定:如果我在网络游戏中输得很惨,是由于我自己能力不够,而不是由于对方使用 Rootkit 作弊才取得胜利(请参阅“资源”边栏中列出的 Quake 3 Buffer Overflow Advisory)。

正是这种固执使我经常无法玩最新的游戏(请参见图 1)。如果一款游戏加入到 Small Business Server (SBS) 域的客户端上,在使用管理员帐户安装和更新之后,还不能使用“受限用户帐户”(LUA) 运行的话,我会立即卸载该游戏。对于这么差劲的作品没有什么好说的,再说我也从来不缺游戏玩。听起来似乎有些偏激,但我始终坚持这一点。尽管如此,为了获得极其美好的玩游戏机会,我并不反对解决几个小问题,这正是我在这里要讨论的内容。因此,请允许我分享一些我遇到的与玩游戏有关的问题,以及我发现比较可行的解决方法。有关最佳实践的简短摘要,请参阅“以受限用户身份玩游戏的技巧”边栏。

图 1 执行手动更新时的文件访问问题

图 1** 执行手动更新时的文件访问问题 **(单击该图像获得较大视图)

常见问题

这种权限问题并不新鲜。有许多游戏以及其他类型的程序,用户必须拥有管理权限才能正常运行。请参阅知识库文章“使用受限用户帐户登录时某些程序不能正常运行”(support.microsoft.com/kb/307091)。文章列出了近 200 种由受限用户运行时会出现问题的游戏和应用程序,其中有来自 Microsoft 的几款程序。

需要说明的是,我认为使用管理权限安装或(手动)更新游戏程序不是什么问题。在我们有能力完成 Windows 上的常规按用户安装之前,这通常是必需的。那一天快来了,但现在还没到。但是,一旦游戏程序安装和更新完成,则系统上的任何用户应该都可以玩,甚至是受限权限用户也毫不例外。

尝试写入受保护的文件夹和注册表项 我发现的一个最常见问题是:在启动游戏时或在游戏过程中,会是试图写入受保护的文件夹或注册表项时出现故障(此问题常见于许多基于 Windows 的应用程序)。默认情况下,只有管理员(和反对使用的 Power User)能够写入某些文件夹(如 %PROGRAMFILES%)和注册表配置单元(如 HKEY_LOCAL_MACHINE)。由此产生的错误相对明显:"Error 42:Can't write log files to C:\Program Files\CoolGamesInc\NewestFPS\Logs\”(错误 42:无法将日志文件写入 C:\Program Files\CoolGamesInc\NewestFPS\Logs\)或“Game not installed properly, reinstall and restart.”(游戏安装不正确,请重新安装并重启。)在游戏过程中也遇到一些问题。例如,在保存进度时,系统显示一些错误消息。有时,游戏程序编写者至少会警告用户,目前需要拥有管理权限才能正常运行游戏的某项功能,Age of Mythology® 就是这样。大型多人在线网络游戏 (MMOG) 常常会遇到权限问题,因为这种游戏要频繁自我更新,而从技术上来说解决自我更新角问题要更棘手一些。我大致看了一下 EVE Online 测试版,注意到它所遭受的问题不仅包括将日志文件放入不适当的位置,而且包括试图自我更新游戏程序内容数据到安装文件夹。

复制保护故障 游戏无法启动的第二个最常见的原因是:以受限用户身份运行游戏时,游戏程序的内置复制保护(或其他反盗版功能)不起作用。其原因可能是驱动程序未正常启动或者某一后台服务未运行。这个问题的最常见表现形式是:即使所需媒体已经放入驱动器,系统还是要求用户插入磁盘。我还发现,游戏程序要求必须拥有管理员权限是因为相信只有管理员才能正常运行复制保护检查。最差劲的情况是给出一些无确实根据的毫无意义的错误消息,其中没有任何关于游戏程序支持站点的参考信息。

无法请求防火墙例外 可在本地网络或 Internet 上运行的多人游戏非常普遍。Windows XP Service Pack 2 (SP2) 增加一个警告消息,如果应用程序试图监听网络,系统会通知用户。这使涉及到我发现的另一个常见问题:游戏程序需要防火墙例外,但在安装游戏程序时不询问是否添加防火墙例外。由于受限用户不能更改防火墙配置,如果管理员不参与完成一些配置工作,则无法补救此警告(请参见图 2)。还有更糟的,有时问题不明显,因为警告显示在 Windows 外壳中,而不是显示在游戏程序的界面中。事实上,我通常是在退出游戏程序之前连错误消息都看不到。

图 2 防火墙设置阻挡了所有娱乐

图 2** 防火墙设置阻挡了所有娱乐 **(单击该图像获得较大视图)

企业客户端问题 我发现的另一个问题与以受限用户身份运行不直接相关。虽然如此,还是值得讨论一下。我家的计算环境象小型企业一样运行。(在这里我不想详细说明,但您可以通过阅读文章了解一下“Master Your Domain:Build a Corporate Network at Home”,这是 Jesper Johansson 和我为 2006 年十月份的 TechNet 杂志撰写的文章。)使用 SBS 2003 (R2),我利用重定向到服务器共享的“我的文档”文件夹设置了一个完整的 Windows 域。就是这样发现我将讨论的最后一个最常见问题:游戏无法处理企业客户端。

我注意到 Age of Empires® III (AoE3) 有两大不足之处。开发团队值得赞扬,以受限用户身份也可以正常启动和玩游戏。但是,由于通过网络写入大量的记录数据,导致游戏每一关的加载都很慢。另外,只要我退出 AoE3,该游戏就会丢失我所作的配置、保存的游戏和进度。毫无疑问,文件保存在“我的文档”文件夹中,只是游戏没有加载它们而已。特别是想到与 AoE3 相比,该系列游戏的早期版本是那么的 LUA 友好,就更是令人扫兴。

我已经了解到有一款游戏至少已承认这类企业客户端问题。当我尝试 Fable®:The Lost Chapters™ 时,该游戏程序考虑得非常周到,它告诉我不支持远程“我的文档”文件夹,然后温文尔雅地退出。对于开发团队承认不支持的关予以并取消,我是极为赞赏。但是,如果游戏程序只是由于要在“我的文档”文件夹中放入几兆字节的数据就尽力阻止用户使用,就有点奇怪了。

简单的解决方法

我再三遇到这些问题,已经记不清涉及多少款游戏了。幸运的是,大多数问题都有简单方便的解决方法。我最喜欢的解决方法是完全丢弃这个游戏,改玩同一流派中其他发行商的 LUA 友好游戏。当然,这还是有点走极端。而且,对于刚刚花 60 美元买的新游戏来说,由于包装盒已打开不能退货,所以这不是最好的解决方法。那么,还是看看有什么方法来修理一下已经拥有的新游戏。以受限用户身份玩游戏的技巧

  • 升级到 Windows Vista。
  • 购买前试一下演示版本。很可能发现完全版本存在的所有 LUA 问题。
  • 查看一下在 LUA () 下运行时会出现问题的已知程序列表
  • 寻找带有 Designed for Windows 徽标的游戏。
  • 安装后,在以受限用户身份运行之前更新游戏程序。
  • 如果您发现以受限用户身份无法正常运行某个游戏,请向发行商和公司的技术支持部门报告您的问题。
  • 如果您必须运行该游戏,请使用系统本地 Power User 帐户。

解决复制保护问题 首先,我们来解决复制保护驱动程序问题。复制保护系统还在,但并不意味着它们就应该阻止非管理员运行游戏!大多数游戏程序使用 Macrovision 的 SafeDisc 复制保护机制,该机制安装了驱动程序来检查原始游戏盘。默认情况下,将该驱动程序配置为按需启动(不允许受限用户使用的功能)。Microsoft 和 Macrovision 都有分布式修复程序,但我发现另一个解决方法:

  1. 使用管理员帐户打开“设备管理器”。
  2. 转到“查看”菜单,然后选择“显示隐藏设备”。
  3. 展开“非即插即用驱动程序”节点。
  4. 打开“Security”或“SecDrv”驱动程序的属性(请参见图 3)。
  5. 将启动类型更改“自动”。

图 3** 允许复制保护正常运行 **(单击该图像获得较大视图)

由于现在启动计算机同时启动驱动程序,所以用户插入磁盘运行游戏程序时驱动程序已准备就绪。

解决文件系统和注册表访问问题 假定能够无拘无束地访问文件系统或注册表的任何部分是当前许多程序和原有程序存在的常见问题,不仅仅局限于游戏。Aaron Margosis 的文章“权限问题:查找和修复 LUA 错误”详细讨论了导致需要管理员权限的各种问题的解决方案。

跟踪访问问题有点棘手。但是,一旦知道哪些文件、文件夹和注册表项是必需的,则直接了当地开放访问控制列表 (ACL),以允许受限用户玩游戏,即可解决问题。下面的方法极其成功:

  1. 从 microsoft.com/technet/sysinternals 获得最新版本的 Filemon 和 Regmon。
  2. 以管理员身份运行这些工具,并让它们开始收集记录。
  3. 以管理员身份玩几分钟游戏,执行最常用的任务(启动新战役、保存游戏、托管网络游戏等等)。
  4. 筛选 Filemon 和 Regmon 的结果,集中了解所测试游戏的访问情况。
  5. 如果需要,开放有问题的文件夹和注册表项的 ACL。
  6. 以非管理员身份运行该游戏,确保它现在可以正常运行。

关于开放 ACL,我有一句警告:开放范围不要太宽(如“每个人”—“完全控制”)或开放级别不要太高(如 HKEY_CLASSES_ROOT)。也最好避免更改系统文件夹(如 %SYSTEMROOT% 和 %PROGRAMFILES%)的任何权限,以避免完全破坏 Windows 或使系统处于不安全状态。

另一个可能的解决方法是以系统本地 Power User 身份运行游戏。这不是我的第一选择,但通过使用系统的本地帐户,如果出现故障,至少可以将影响范围限制在一个工作站内。我发现这个方法可以修复大多数只有以管理员身份才能正常运行的游戏。

有点离题了,我发现暂时以管理员身份运行游戏是使游戏自我更新的最简便方法。我通常是以管理员身份运行游戏,调用其更新选项,退出游戏,然后恢复使用受限用户帐户实际玩游戏。(值得一提的是,如果修补程序由原始发行商签发,则 Windows Vista™ 允许受限用户更新应用程序。)

Windows Vista 还可帮助游戏和其他应用程序解决文件和注册表的访问问题。默认情况下,由受限用户运行的程序会将对这些被误导的重定向文件和注册表访问执行的虚拟化修补程序转到特定于用户的缓存。我亲眼看见在 Windows 9x 时期设计的游戏程序(例如“粘土世界”)在 Windows XP 上不能正常运行(由于权限问题),而在使用默认修补程序的 Windows Vista 上却运行得非常好。我希望在 Windows Vista 上测试一些其他有问题的游戏程序,但我预感要找到 Windows Vista 不能正确修复的游戏会很困难。

解决防火墙问题 最好在第一次安装游戏程序时解决防火墙问题。但游戏的安装程序还没有智能到查询和配置必备的防火墙调整程序。下面推荐一个效果不错的方法:

  1. 以管理员身份登录。
  2. 打开“Windows 防火墙控制面板”。
  3. 选择向防火墙例外列表添加程序。
  4. 提示时从列表中选择游戏或浏览到游戏可执行程序。

通过向防火墙例外添加游戏可执行程序,保证允许游戏访问正常运行所需的所有端口。现在可以痛快淋漓地玩游戏了!

解决企业客户端问题 游戏在企业客户端上遇到的问题迟早会消失。使用宽带的多计算机家庭数量在增加,在家运行 SBS 的用户群也在增加。但目前仍需相应的解决方案。

就我的具体情况而言,我发现系统本地 LUA 可以解决重定向“我的文档”问题。只要不将“我的文档”文件夹重定向到网络文件夹,以受限用户身份运行“帝国时代 3”和“神鬼寓言:失落之章”的效果都会非常好。资源

结束语

强烈建议以受限用户身份运行,这样您可以利用以管理员身份运行所没有的帮助。在一个企业连接的权限最少的环境中,玩游戏不一定容易,但也不是完全不可能。过去这些年,我发现每个流派都有许多游戏以受限用户身份运行得很好。我还发现,通过执行一些修补程序也可以玩许多其他游戏。同时,通过使用 Windows Vista 中的虚拟化功能,过去以受限用户身份在 Windows XP 上不能玩的游戏又可以玩了。

Matt Clapham 是 Microsoft 的安全方案经理,西雅图 IT 安全社区的积极参与者和 IT 孵化项目风险管理团队成员。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.