Share via


Windows 系統管理

在安全的環境中遊戲

Matt Clapham

 

摘要:

  • 寫入保護資料夾和登錄機碼
  • 複製保護失敗
  • 防火牆問題
  • 企業客戶問題

我白天在 Microsoft 擔任安全性專案經理工作。此外,我也經常為 TechNet Magazine 撰寫安全性文章。不用說,我當然非常重視安全性。不過我也有其他興趣

。在閒暇時,我喜歡玩 Windows® 架構的遊戲。我特別愛玩射擊、模擬訓練、角色扮演和即時策略等類型的遊戲。不過這裡還有個問題。就和我的朋友 Jesper Johansson 及 Aaron Margosis 一樣,如非必要,我拒絕以系統管理員身分執行遊戲。有部份原因是為了確保自己在網路遊戲中的失敗,是因為技巧不足,而不是因為有人蓄意植入 Rootkit 所產生的影響 (請參閱「資源」資訊看板所列出的 Quake 3 Buffer Overflow Advisory)。

我非常在意這一點,因此經常無法玩最新最熱門的遊戲 (請參閱 [圖 1])。如果在系統管理員帳戶中安裝和更新之後,仍無法在小型企業伺服器 (SBS) 聯合網域上以限制權限的使用者帳戶 (LUA) 執行遊戲,我會立刻移除該遊戲。如此粗劣的工程技術不值得使用,我也不缺遊戲可玩。我承認這聽起來或許比較極端,但我非常堅持不妥協。不過我倒是不反對為了高品質的休閒遊戲,而接受一些小缺點,這裡所要討論的就是這個部份。現在就讓我和大家分享一些個人所遇到的遊戲相關問題,以及我找出的對應解決方法。要迅速瀏覽最佳方式的摘要內容,請看資訊看板中的「以限制權限使用者身分玩遊戲的秘訣」。

圖 1 執行手動更新的檔案存取問題

圖 1** 執行手動更新的檔案存取問題 **(按影像可放大)

常見問題

此權限問題十分常見。事實上有許多不同的遊戲和其他類型的程式,都需要使用系統管理員權限才能正確執行。請參考知識庫文件 Certain Programs Do Not Work Correctly if You Log On Using a Limited User Account (請參閱 support.microsoft.com/kb/307091)。其中列出近 200 種無法以限制權限使用者身分執行的遊戲和應用程式,其中也包括幾個 Microsoft 的程式。

我要澄清的是,我並不認為需要系統管理員權限才能安裝或 (手動) 更新遊戲是個問題。在我們有能力於 Windows 上製作每位使用者的安裝常式之前,這是必然的現象。這一天遲早會來,但現在時候未到。然而遊戲一旦安裝和更新完成,就應該可以在系統上由任何一位使用者操作,即便是限制權限的使用者也沒問題。

嘗試寫入保護資料夾和登錄機碼 我最常見的問題,是因為遊戲嘗試寫入保護資料夾或登錄機碼,而在啟動或遊戲中失敗 (這是許多 Windows 架構應用程式常發生的問題)。在預設情況下,只有系統管理員 (以及可替代的進階使用者) 可以寫入某些資料夾 (例如 %PROGRAMFILES%) 以及登錄區 (如 HKEY_LOCAL_MACHINE)。因此所造成的錯誤較為顯而易見:「錯誤 42:無法於 C:\Program Files\CoolGamesInc\NewestFPS\Logs\ 寫入記錄檔」或「遊戲並未正確安裝,請重新安裝並重新啟動」。我也曾經在遊戲中途看過這樣的例子,例如在儲存進度的過程中出現錯誤訊息。有時候遊戲作者至少會提醒使用者,目前的遊戲需要使用系統管理員權限才能運作,這是我玩神話世紀 (Age of Mythology®) 所遇到的經驗。大型多人線上遊戲 (MMOG) 經常會出現權限問題,因為這種遊戲經常自行更新,而其自我更新的方式特別刁鑽,較難以技術方式解決問題。在執行 EVE 線上試用版時,我發現它不僅將記錄檔放在錯誤的位置,還嘗試於安裝資料夾中自我更新遊戲內容資料。

複製保護失敗 我第二常見的遊戲啟動失敗原因,是由於遊戲內建複製保護 (或其他反盜版功能) 無法在限制權限使用者身分下運作。有可能是驅動程式無法正確啟動,或者未執行某些背景服務。我最常見的典型範例,就是遊戲要求使用者插入磁片,即使要求的磁片已放入磁碟機內仍出現相同訊息。我也看過某些遊戲表示必須具備系統管理員權限,因為它誤以為只有系統管理員才能正確執行複製保護檢查。最糟的情況則會出現不正確、荒謬的錯誤訊息,而且在該遊戲的支援網站上並無參考內容。

要求防火牆例外失敗 可於區域網路或網際網路上參與的多人遊戲十分常見,Windows XP Service Pack 2 (SP2) 新增了一個警告訊息,藉以告知使用者應用程式何時嘗試接聽網路。我也因此觀察到下一個常見的問題:需要防火牆例外,但是不會要求在安裝時期加入此例外的遊戲。既然限制權限使用者無法變更防火牆組態設定,在缺少某些由系統管理員執行的組態設定情況下,根本無法補救此警告 (請參閱 [圖 2]) 的問題。更糟糕的是,有時候問題並不明顯,因為警告出現在 Windows shell,而不是在遊戲介面中。事實上,我通常要到離開遊戲之後,才發現這些錯誤訊息。

圖 2 遊戲受到防火牆設定的阻擋時

圖 2** 遊戲受到防火牆設定的阻擋時 **(按影像可放大)

企業客戶問題 我發現另一個問題雖然和限制權限使用者並無直接關係,但仍舊值得討論。我以小型企業方式來執行家用電腦環境 (我在此不多加贅述,詳情可參閱以下文件 Master Your Domain:Build a Corporate Network at Home,這是由我和 Jesper Johansson 為 2006 年十月號 TechNet Magazine 所撰寫的文章。使用 SBS 2003 (R2),我建立完整的 Windows 網域,其中 [我的文件] 資料夾重新導向伺服器共用。這就是我發現最後一項常見問題的過程:無法處理企業客戶的遊戲。

我發現神話世紀 (Age of Empires® III, AoE3) 的一項雙重致命傷。一直到開發團隊名錄之前,遊戲在限制權限使用者身分下都能正確啟動和執行。然而我發現劇情的載入速度變慢,因為有許多記錄資料透過網路寫入。此外,在我每次離開遊戲之後,AoE3 就會遺失我的組態設定、已儲存遊戲,以及遊戲進度。這些檔案顯然都存在 [我的文件] 資料夾中,但遊戲卻無法載入。這的確令人失望,尤其考量到 AoE3 較過去同系列舊版本更適用 LUA。

我曾看過一個遊戲至少會告知此類企業客戶議題。在我嘗試神鬼寓言:失落的章節 (Fable®:The Lost Chapters™) 時,這個遊戲很體貼的告訴我,這裡不支援遠端 [我的文件] 資料夾,然後才優雅的結束程式。我讚揚開發小組找出不支援條件並將其排除在外的精神。不過,遊戲特地停止使用者的舉動的確有點奇怪,尤其當遊戲只想在 [我的文件] 資料夾中放置幾百萬位元組 (MB) 資料的情況下。

簡易解決方案

我已經在難以計數的遊戲中看過這些問題無數次。幸好大多數的問題都有方便的因應措施。我最喜愛的修復方式,就是直接中止整個遊戲,切換到其他發行者出版的同類型 LUA 就緒遊戲。這個方法聽起來也有些極端。在剛剛花了 60 塊美金買新遊戲之後,這也不是最佳解決方案。況且我也不能退貨,因為盒子已經開封了。就讓我們來看看該如何修復這個已經入手的遊戲吧。以限制權限使用者身分玩遊戲的秘訣

  • 升級到 Windows Vista。
  • 在購買前先試用。如此一來,就能看出完整版的 LUA 問題。
  • 參考程式清單中已知在 LUA () 下執行會產生問題的程式。
  • 尋找有 Designed for Windows 標籤的遊戲。
  • 安裝後先更新遊戲,再以限制權限使用者身分執行。
  • 當您發現遊戲無法以限制權限使用者身分運作時,請向發行者以及公司的技術支援服務部門表達您的疑慮。
  • 如有必要,可使用系統本機進階使用者帳戶登入。

修復複製保護問題 首先,我們要對付複製保護驅動程式的問題。複製保護系統已經存在,但這並不表示他們可以阻止非系統管理員執行遊戲!大多數遊戲使用 Macrovision's SafeDisc 複製保護機制,也就是安裝驅動程式來檢查是否為正版遊戲磁碟。在預設情況下,驅動程式組態設定為視需求啟動 (這是限制權限的使用者無法執行的功能)。Microsoft 和 Macrovision 都提供修復程式,但我發現另一個因應措施:

  1. 使用系統管理員帳戶開啟 [裝置管理員]。
  2. 到 [檢視] 功能表中,選取 [顯示隱藏裝置]。
  3. 展開 Non-Plug and Play Drivers 節點。
  4. 開啟 Security 或 SecDrv 驅動程式的屬性 (請參閱 [圖 3])。
  5. 將啟動類型變更為 [自動]。

圖 3** 讓複製保護正確執行 **(按影像可放大)

由於驅動程式現在於電腦開機同時啟動,因此使用者只要插入磁碟,即可隨時執行遊戲。

修復檔案系統和登錄存取問題 假定可自由存取檔案系統或登錄的任何部份,這不僅發生在遊戲軟體中,而是許多新、舊程式都有的常見問題。Aaron Margosis 的文章 Problems of Privilege:Find and Fix LUA Bugs 即深入探討各種導致要求系統管理員權限相關問題的解決方案。

存取問題或許較難追蹤,不過一旦識別出必要的檔案、資料夾和登錄機碼組合,就能直接放寬存取控制清單 (ACL) 以允許使用者玩遊戲。我曾經成功使用以下方式:

  1. 從 microsoft.com/technet/sysinternals 取得最新版本的 Filemon 和 Regmon。
  2. 以系統管理員身分執行工具,並且要求開始收集記錄。
  3. 以系統管理員身分先玩幾分鐘,執行最常見的工作 (開始新戰役、儲存遊戲、主導網路遊戲等等)。
  4. 過濾 Filemon 和 Regmon 的結果,以專注於受測試遊戲的存取功能。
  5. 視需要放寬有問題的資料夾和登錄機碼的 ACL。
  6. 以非系統管理員身分執行遊戲,以確定現在可以開始運作。

提醒您在放寬 ACL 時請注意:請勿放的太寬 (例如 Everyone—Full Control) 或者設定太高的層級 (如 HKEY_CLASSES_ROOT)。此外最好能避免變更系統資料夾的任何使用權限,如 like %SYSTEMROOT% 和 %PROGRAMFILES%,以避免完全破壞 Windows,或者讓系統處於不安全的狀態。

另一項可能的因應方式,是以系統本機進階使用者身分執行遊戲。這不是我的首選方式,但利用系統本機的身分可以在發生錯誤時,將影響範圍侷限在單一工作站內。我發現對於大多數只有以系統管理員身分才能正常運作的遊戲,這個解決辦法皆可適用。

另外,我還發現以系統管理員身分短暫執行遊戲,是讓遊戲執行自我更新的好辦法。我通常以系統管理員身分執行遊戲,呼叫其更新選項,然後離開遊戲並且回到限制權限的使用者帳戶中,再真正開始玩遊戲 (值得一提的是,Windows Vista™ 可以讓限制權限的使用者更新應用程式,並假設修補程式是由原發行者指派)。

Windows Vista 亦可幫助遊戲和其他應用程式解決檔案和登錄存取等問題。在預設情況下,由限制權限使用者執行的程式會啟動虛擬化作業 Shim,重新將導向錯誤的檔案和登錄存取導向使用者指定的快取。我個人曾看過以 Windows 9x era 設計的遊戲 (例如終極戰區 (The Neverhood)) 無法在 Windows XP 中正確執行 (由於使用權限的緣故),但是卻能以預設 Shim 在 Windows Vista 中正常運作。我期待能在 Windows Vista 上測試其他有問題的遊戲,不過我有預感大概很難找到 Windows Vista 無法正常 Shim 的遊戲。

修復防火牆問題 防火牆問題在一開始安裝遊戲時最容易解決。不過,如果遊戲安裝程式不夠強,無法要求和設定必要的防火牆調整,我這裡有個方法也能夠達到相同目的:

  1. 以系統管理員身分登入。
  2. 開啟 [Windows 防火牆] 控制台。
  3. 選擇在防火牆例外清單中新增程式。
  4. 從清單中選取遊戲,或者根據提示瀏覽並找出遊戲執行檔。

將遊戲執行檔新增到防火牆例外清單之後,我就能確保遊戲可存取任何正常運作所需要的連接埠。更多遊戲接踵而來!

修復企業客戶的問題 企業客戶在執行遊戲時所遇到的問題,將隨著時間消失。隨著寬頻網路的普及,有愈來愈多家庭使用多部電腦,而且也有更多使用者在家中執行 SBS。不過就現階段而言,仍需要解決方案。

以我的個案來說,我發現系統本機 LUA 可以解決重新導向 [我的文件] 問題。神話世紀 (Age of Empires III) 和神鬼寓言:失落的章節 (Fable:The Lost Chapters) 兩個遊戲,都能以限制權限使用者身分正常運作,只要確定 [我的文件] 資料夾並未重新導向至網路資料夾中即可。資源

結論

我強烈建議以限制權限使用者身分執行,這樣您才能充份運用非系統管理員執行的各項優勢。在企業連結、權限極小的環境下玩遊戲,的確不太容易,但絕非不可能。多年來,我發現有許多各種類型的遊戲,都能以限制權限使用者身分正常執行。另外我也發現諸多修復方式,都能讓各種遊戲正確運作。同時在 Windows Vista 的虛擬化作業下,不可能在 Windows XP 中以限制權限使用者身分玩的遊戲,又再度可以正常運作了。

Matt Clapham 是 Microsoft 的安全性專案經理,目前積極參與西雅圖 IT 安全性社群,同時也是 IT 籌備專案「風險管理」小組的成員。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.