匯出 (0) 列印
全部展開

決定如何修正與 Windows 7 不相容的應用程式

更新日期: 2009年10月

適用於: Windows 7, Windows Server 2008 R2

Windows 7 包含使用者帳戶控制 (UAC) 虛擬化技術,可供與 UAC 不相容,而且需要系統管理認證才能正確執行的應用程式使用。與 UAC 不相容的應用程式嘗試寫入受保護的目錄 (例如 Program Files 資料夾) 時,UAC 會針對它嘗試變更的資源,提供它自己的虛擬化檢視給應用程式。虛擬化複本會在使用者的設定檔中維護。此策略會針對執行不相容之應用程式的每個使用者建立個別的虛擬化檔案複本。不過,有些情況無法使用 UAC 虛擬化:

  • UAC 虛擬化不適用於以完整系統管理存取權杖提升權限並執行的應用程式。

  • UAC 虛擬化僅支援 32 位元的應用程式。原生 Windows 64 位元應用程式必須與 UAC 相容並將資料寫入正確位置。

  • 如果應用程式包含具有要求之執行層級屬性的應用程式資訊清單,則會停用應用程式的 UAC 虛擬化。使用 Microsoft Visual Studio 2008 建置的應用程式預設包含應用程式資訊清單。

下列問題的設計在於協助您針對未以標準使用者身分執行的應用程式進行疑難排解。這些問題會以回答的順序呈現。

  1. 應用程式是否執行合法的系統管理工作?

  2. 更新是否可以修正問題?

  3. 這是標準使用者相容性問題嗎?

  4. 將整個電腦的資料轉換到個別使用者的資料將會修正問題嗎?

  5. 修改檔案或資料夾的存取控制清單將會修正問題嗎?

  6. 以系統管理員身分執行某個應用程式將會修正問題嗎?

Important重要
只有在其他解決方案都無法修正問題時,才能以系統管理員身分執行應用程式。

應用程式是否執行合法的系統管理工作?

部分應用程式的設計用於執行合法的系統管理動作,因此需要系統管理權限。例如,如果應用程式的設計是在電腦上安裝或管理軟體,則需要系統管理員層級的權限,才能執行這些動作。管理系統資源的工具一般需要系統管理權限,而且僅能由以本機 Administrators 群組成員身分登入的使用者,或者可以提供系統管理認證的使用者使用。標準使用者一般應該不需要執行這些應用程式。

更新是否可以修正問題?

若要修正應用程式碼中的問題,可能只需要更新至最新的已發行版本即可。對於舊版應用程式,更新或臭蟲修正可能不再是其中一個選擇。

重新設計應用程式

應該將不一定需要系統管理權限的應用程式重新設計為與 UAC 相容。Microsoft 已經為應用程式開發人員提供指導方針和工具以協助簡化這個重新設計的程序。如需詳細資訊,請參閱 MSDN Library 中的應用程式相容性 (http://go.microsoft.com/fwlink/?LinkId=49973) (英文)。

即使做了這些變更,可能仍然有需要完整系統管理員存取權的工作。部分範例包含管理使用者帳戶、安裝裝置驅動程式,以及執行企業管理軟體。在 Windows 7 中,應用程式開發人員需要判斷其應用程式針對特定工作所需的是兩個存取層級 (標準或系統管理) 中的哪一個。如果應用程式的某個工作不需完整系統管理員存取權,則應該將該應用程式撰寫成只需要標準使用者存取權檢查。例如,與 UAC 相容的應用程式應該將資料檔案寫入使用者設定檔或檔案共用,而非 Program Files 資料夾。

Windows 7 Logo Program

Windows 7 Logo Program 是建立與 UAC 相容之應用程式的主要優點。此方案會強制執行嚴格的憑證指導方針,從而向客戶保證通過檢定的產品將會與 Windows 7 正確整合。

Windows 7 標誌憑證為獨立軟體廠商 (ISV) 提供了具競爭力的區別性和可靠性。如需 Windows 7 標誌憑證處理程序的相關資訊,請參閱 Windows 7 Logo Program (http://go.microsoft.com/fwlink/?LinkId=146648) (英文)。

這是標準使用者相容性問題嗎?

應用程式無法以標準使用者身分正確執行的常見原因是,應用程式將資料寫入包含在應用程式安裝資料夾中的檔案,例如 %ProgramFiles% 中的資料夾。由於標準使用者並沒有 Program Files 資料夾及其子資料夾的寫入存取權,因此,在嘗試寫入此資料夾中的檔案時,應用程式會失敗。

若要確認問題實際上是與使用較低的權限執行有關,而不是與其他 Windows 7 相容性問題有關,請嘗試在測試電腦上,以具備提高權限的系統管理員身分執行應用程式。

Important重要
執行已提高權限的應用程式可能會造成永久的設定變更,而且這些變更可能會影響到其他應用程式相容性測試的可靠性與可重複性,因此,這只能在設定為測試用途的電腦上進行。

如果應用程式在以標準使用者身分執行時發生相容性問題,您可以嘗試安裝一個或多個應用程式相容性修正 (也稱為 shim) 來解決問題。應用程式相容性修正會以處理一般標準使用者相容性問題的方式,修改應用程式的行為。每個應用程式相容性修正都會變更系統對於目標應用程式的行為,所以應用程式相容性修正可能會導入不同的應用程式相容性問題。因此,您應該僅安裝為執行應用程式所需的應用程式相容性修正。

如需有關應用程式相容性修正、決定何時使用應用程式相容性修正,以及如何管理應用程式相容性修正資料庫的資訊,請參閱在企業中管理應用程式相容性修正 (http://go.microsoft.com/fwlink/?LinkID=151421)。

note備註
在某些情況下,Windows 7 可能會出現非預期的 UAC 提升權限提示。這是由於判斷應用程式是否為軟體安裝程式時使用的啟發學習法所造成。例如,如果應用程式命名為 setup.exe,Windows 7 會假設它是一個應用程式安裝程式,而且必須使用 Administrators 群組成員的使用者帳戶執行。針對這個範例,您可以使用在企業中管理應用程式相容性修正 (http://go.microsoft.com/fwlink/?LinkID=151421) 中<部分可用的應用程式相容性修正>一節中所述的 SpecificNonInstaller 相容性修正。

將整個電腦的資料轉換到個別使用者的資料將會修正問題嗎?

當您將整個電腦的資料轉換到個別使用者的資料時,該資料會在使用者的設定檔中維護,而且僅能供該使用者使用。將整個電腦的資料轉換到個別使用者資料的兩個範例為:

  • 識別應用程式寫入的 HKEY_CLASSES_ROOT 機碼,然後在登錄中的 \HKEY_CURRENT_USER\Software\Classes 底下建立那些機碼。

  • 識別應用程式寫入的 .ini 檔案,然後在登錄的 \HKEY_LOCAL_MACHINE\Microsoft\WindowsNT\IniFileMapping 中,建立那些檔案的 IniFileMapping 項目。

修改檔案或資料夾的存取控制清單將會修正問題嗎?

在應用程式所使用的共用位置,審慎地修改一個或多個檔案或資料夾的存取控制清單 (ACL)。

Caution注意
修改檔案或資料夾上的 ACL 可能會將安全性風險導入電腦。若要將提供標準使用者額外權限的安全性風險範圍限制在應用程式安裝資料夾中的檔案和資料夾,您應該精確地判斷哪些檔案和資料夾會受到影響,然後將額外權限僅授與那些檔案和資料夾。

使用下列指導方針協助您決定要進行的變更:

  1. 僅針對應用程式專屬資源進行 ACL 變更:僅針對應用程式專屬資源 (而非整個作業系統的資源) 考慮 ACL 變更。即使在 %ProgramFiles%\PublisherName\ApplicationName\DataFolder 上變更 ACL 是可以接受的,但您絕對不能在 %SystemRoot%\System32 上變更 ACL。

  2. 將 ACL 變更限制為系統管理員未使用的檔案:避免在系統管理員或服務使用的資源上變更 ACL,特別是 .exe 和 .dll 檔案之類的可執行檔。這麼做會增加「提升權限」的風險,而可能導致危害整個系統。如果您必須針對系統管理員所使用的資源變更 ACL,其攻擊面仍然遠小於所有應用程式一律以系統管理員身分執行的作法。

  3. 避免在二進位檔案上進行 ACL 變更:為防止惡意程式碼感染或取代程式檔案,請避免變更程式碼 (例如 .exe、.dll 或 .ocx 檔案) 上的 ACL。

  4. 將 ACL 變更限制為單一標準使用者:理想上,資源應該僅能由單一標準使用者存取。如果資源可由多個標準使用者存取,則每個使用者都會增加其他使用者帳戶受到危害的風險。

  5. 盡可能授與最少的額外權限:您應該將最少量的額外存取權,盡可能授與最少的資源數目以及最少的使用者數目,讓應用程式可以正常運作即可。在大量系統檔案或登錄上授與 [完全控制] 給 Everyone 群組絕對沒有必要。最好將額外存取權僅授與電腦的主要使用者,但是當每部電腦都有一個不同的主要使用者時,可能會難以在大量電腦上進行管理。如果您可以定義需要使用程式的一組使用者,請將這些使用者新增到群組中,然後授與存取權給該群組。

  6. 將存取權授與內建的 Interactive 群組:您也可以考慮將存取權授與內建的 Interactive 群組這種替代方式。這樣只會授與額外存取權給當時以互動方式登入的群組,而不會授與額外的遠端存取權給資源。

    note備註
    在遠端桌面或快速使用者切換的情況下,權杖中含有 INTERACTIVE 的電腦上可能會有多個同時使用者。

以系統管理員身分執行某個應用程式將會修正問題嗎?

如果其他解決方案都無法修正問題,請以系統管理員身分執行單一的不相容應用程式。此解決方案只能當做最後手段使用。以系統管理員身分執行應用程式做為替代方式時,調查可在不授與額外權限給使用者或應用程式的情況下,協助標準使用者執行所需之應用程式的應用程式。

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見

社群新增項目

新增
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft