修正:您無法啟動在 .NET Framework 3.0 或 .NET Framework 3.5 中使用 Windows Presentation Foundation 建立的 XAML 瀏覽器應用程式


徵狀


您無法啟動在 Microsoft .NET Framework 3.0 或 Microsoft .NET Framework 3.5 中使用 Windows Presentation Foundation (WPF)建立的 XAML 瀏覽器應用程式(XBAP)。 此外,如果您在相容的瀏覽器中流覽 XBAP,您可能會遇到下列其中一種症狀:
  • 可能會出現空白的瀏覽器視窗。 此外,也會出現 [下載] 對話方塊,永不停止下載。
  • 您會在瀏覽器中收到下列錯誤訊息:
    部署失敗
  • 您收到錯誤訊息,指出應用程式已損壞。
  • PresentationHost 進程和瀏覽器可能會重複重新開機。
注意: 相容的瀏覽器是支援 XBAP 的瀏覽器。

原因


發生這個問題的原因是,在某些帳戶遷移案例或作業系統升級案例中導致不正常的情況。

解決方案


下載資訊

下列檔案可從 Microsoft 下載中心下載:Download Download the XbapPermFix_sx.exe package now.立即下載 XbapPermFix_sx .exe 套件。如需有關如何下載 microsoft 支援檔案的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
119591 如何從線上服務取得 Microsoft 支援檔案
Microsoft 已對此檔案進行病毒掃描。 Microsoft 是利用發佈當日的最新病毒偵測軟體來掃描檔案。 檔案會儲存在安全性強化的伺服器上,以避免任何未經授權的變更。

先決條件

不需要先決條件。

重新啟動需求

在套用此熱修復程式後,您不需要重新開機電腦。

Hotfix 取代資訊

此熱修復程式不會取代任何其他的熱修復程式。

檔案資訊

此熱修復程式的英文版具有下表所列的檔案屬性(或更新的檔案屬性)。 這些檔案的日期與時間是以國際標準時間 (UTC) 表示。 當您檢視檔案資訊時,它會轉換為當地時間。 若要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 項目的 [時區] 索引標籤。
檔案名稱檔案版本檔案大小日期時間平台
Xbappermfix_sx.exe6.0.2600.085,02416-Jun-200803:20x86

狀態


Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

因應措施


若要解決此問題,請使用下列其中一種解決方法。

因應措施 1

刪除並重新建立受影響的使用者帳戶。

因應措施 2

重要此節、方法或工作包含的步驟可告訴您如何修改註冊表。不過,如果您不正確地修改註冊表,可能會發生嚴重問題。因此,請務必仔細遵循這些步驟。若要增加保護,請在修改前先備份註冊表。然後,如果發生問題,您可以還原註冊表。如需如何備份及還原註冊表的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
322756 如何在 Windows 中備份及還原登錄
手動修復許可權設定。若要這樣做,請執行下列步驟:
  1. 按一下 [開始]、按一下 [執行]、輸入Regedit,然後按一下[確定]
  2. 展開 [ HKEY_CURRENT_USER],然後展開 [軟體]。
  3. 以滑鼠右鍵按一下 [課程],然後按一下 [許可權]。
  4. 在 [群組或使用者名稱] 底下,按一下受影響的使用者帳戶名稱。
  5. 在 [使用者名稱的許可權] 底下,按一下以選取 [完全控制] 許可權的 [允許] 核取方塊。
  6. 按一下 [高級],然後按一下以選取 [包括來自這個物件的父項的可繼承許可權] 核取方塊。
  7. 按一下 [套用] ,然後按一下[確定]兩次。注意: 如果您仍然無法啟動 XBAP,請移至步驟8。
  8. 展開 [ HKEY_CLASSES_ROOT],然後展開 [介面]。
  9. 以滑鼠右鍵按一下 [{79EAC9C9-BAF9-11CE-8C82-00AA004BA90B}],然後按一下 [許可權]。
  10. 在 [群組或使用者名稱] 底下,按一下受影響的使用者帳戶名稱。
  11. 在 [使用者名稱的許可權] 底下,按一下以選取 [讀取] 許可權的 [允許] 核取方塊。
  12. 按一下 [套用],然後按一下[確定]注意: 如果您仍然無法啟動 XBAP,請重複步驟6-7。 如果沒有解決問題,請針對下列登錄機碼執行步驟9-12:
    • {79EAC9C1-BAF9-11CE-8C82-00AA004BA90B}
    • {79EAC9C4-BAF9-11CE-8C82-00AA004BA90B}
    如果問題沒有解決,請移至步驟13。
  13. 在 Windows 資源管理器中,找出下列路徑:
    C:\Documents 和 Settings \UserName\Local 設定 \
  14. 確定此路徑下的下列資料夾是否包含名為 Desktop 的檔案:
    • [應用程式資料] 資料夾及其 [部署] 子資料夾
    • [應用程式] 資料夾
    • Temp 資料夾
  15. 將桌面 .ini 檔案重新命名為其他名稱。
  16. 找出包含桌面 .ini 檔案的資料夾,以滑鼠右鍵按一下該資料夾,然後按一下 [屬性]。
  17. 按一下 [安全性] 索引標籤上的 [高級]。
  18. 按一下以選取 [包含此物件的父項的可繼承許可權] 核取方塊。
  19. 按一下 [套用],然後按一下[確定]注意: 如果沒有解決問題,請針對列出的所有資料夾重複執行步驟14-19。

其他相關資訊


PresentationHost 進程會以受限制的程式標記執行。 此程式會在系統管理員安全性群組和 Power Users 安全性群組中產生成員資格。 在網際網路區域沙箱中執行的應用程式,不需要擁有這些安全性群組的完整許可權。 此外,此程式還會產生許多 Microsoft Windows NT 安全許可權。此行為是縱深防禦的安全性功能。 此功能的效果,與使用者帳戶控制作用時,在 Windows Vista 上執行非提升程式的處理方式類似。在某些帳戶遷移案例或作業系統升級案例中,可能會發生更細微的存取控制清單(Acl)損毀。 這個損毀會導致特定的使用者帳戶不會被明確指定給屬於使用者設定檔的特定資料夾或登錄機碼。 這個問題可能會因為父物件的許可權繼承已停用。 這個問題只會影響已停用群組成員資格的應用程式。 例如,PresentationHost 應用程式已停用群組成員資格。已知這個問題會影響下列登錄機碼或資料夾的許可權:
  • 類別登錄機碼
  • IPersistMoniker 介面登錄機碼
  • 下列路徑中的一些資料夾:
    C:\Documents 與設定 \UserName\Local 設定
    例如,[應用程式資料] 資料夾及其 [部署] 子資料夾、[應用程式] 資料夾及 Temp 資料夾會受到影響。
如需 Windows Presentation Foundation XAML 瀏覽器應用程式的詳細資訊,請造訪下列 Microsoft 開發人員網路(MSDN)網站:如需 Windows Presentation Foundation 安全性的詳細資訊,請造訪以下 MSDN 網站:如需軟體更新術語的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明

呼叫堆疊資訊

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))   at System.Deployment.Internal.Isolation.IsolationInterop.GetUserStore(UInt32 Flags, IntPtr hToken, Guid& riid)   at System.Deployment.Internal.Isolation.IsolationInterop.GetUserStore()   at System.Deployment.Application.ComponentStore..ctor(ComponentStoreType storeType, SubscriptionStore subStore)   at System.Deployment.Application.SubscriptionStore..ctor(String deployPath, String tempPath, ComponentStoreType storeType)   at System.Deployment.Application.SubscriptionStore.get_CurrentUser()   at System.Deployment.Application.DeploymentManager..ctor(Uri deploymentSource, Boolean isUpdate, Boolean isConfirmed, DownloadOptions downloadOptions, AsyncOperation optionalAsyncOp)   at System.Deployment.Application.InPlaceHostingManager..ctor(Uri deploymentManifest, Boolean launchInHostProcess)   at System.Deployment.Application.InPlaceHostingManager..ctor(Uri deploymentManifest)   at MS.Internal.AppModel.XappLauncherApp.TryUriActivation()   at MS.Internal.AppModel.XappLauncherApp.XappLauncherApp_Startup(Object sender, StartupEventArgs e)   at System.Windows.Application.OnStartup(StartupEventArgs e)   at System.Windows.Application.<.ctor>b__0(Object unused)   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)   at System.Windows.Threading.DispatcherOperation.InvokeImpl()   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)   at System.Threading.ExecutionContext.runTryCode(Object userData)   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)   at System.Windows.Threading.DispatcherOperation.Invoke()   at System.Windows.Threading.Dispatcher.ProcessQueue()   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)   at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)   at System.Windows.Threading.Dispatcher.Run()   at System.Windows.Application.RunDispatcher(Object ignore)   at System.Windows.Application.StartDispatcherInBrowser(Object unused)   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)   at System.Windows.Threading.DispatcherOperation.InvokeImpl()   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)   at System.Threading.ExecutionContext.runTryCode(Object userData)   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)   at System.Windows.Threading.DispatcherOperation.Invoke()   at System.Windows.Threading.Dispatcher.ProcessQueue()   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)   at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)