症状
无法启动使用 Windows Presentation Foundation (WPF)在 Microsoft .NET Framework 3.0 或 Microsoft .NET Framework 3.5 中创建的 XAML 浏览器应用程序(XBAP)。 此外,如果在兼容的浏览器中浏览 XBAP,可能会遇到以下症状之一:
-
可能会出现一个空白的浏览器窗口。 此外,将显示 "下载" 对话框,永远不会停止下载。
-
在浏览器中收到以下错误消息:
部署失败
-
您收到一条错误消息,指出应用程序崩溃。
-
PresentationHost 进程和浏览器可能会重复重启。
注意 兼容的浏览器是支持 XBAP 的浏览器。
原因
出现此问题的原因是,某些帐户迁移方案或操作系统升级方案导致的异常情况。
解决方案
下载信息
以下文件可从 Microsoft 下载中心下载: Download the XbapPermFix_sx.exe package now.立即下载 XbapPermFix_sx 的 .exe 程序包。有关如何下载 microsoft 支持文件的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591 如何从联机服务获取 Microsoft 支持文件 Microsoft 已对该文件进行病毒扫描。 Microsoft 使用的是文件发布时可以获得的最新病毒检测软件。 该文件存储在安全性得到增强的服务器上,以防止对文件进行未经授权的更改。
先决条件
无需先决条件。
重启要求
应用此修补程序后,无需重新启动计算机。
修补程序替换信息
此修补程序不替代任何其他修补程序。
文件信息
此修补程序的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 当你查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。
文件名 |
文件版本 |
文件大小 |
日期 |
时间 |
平台 |
---|---|---|---|---|---|
Xbappermfix_sx.exe |
6.0.2600.0 |
85,024 |
16-Jun-2008 |
03:20 |
x86 |
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
解决方法
若要解决此问题,请使用以下解决方法之一。
解决办法 1:
删除并重新创建受影响的用户帐户。
解决办法 2
重要提示此部分、方法或任务包含告诉你如何修改注册表的步骤。但是,如果您错误地修改了注册表,可能会出现严重问题。因此,请确保仔细执行以下步骤。为增强保护,请在修改注册表之前对其进行备份。然后,如果出现问题,您可以还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表手动修复权限设置。若要执行此操作,请按照下列步骤操作:
-
单击 "开始",单击 "运行",键入Regedit,然后单击"确定"。
-
展开 " HKEY_CURRENT_USER",然后展开 "软件"。
-
右键单击 "类",然后单击 "权限"。
-
在 "组或用户名称" 下,单击受影响的用户帐户名称。
-
在 " 用户名的权限" 下,单击以选中 "完全控制" 权限的 "允许" 复选框。
-
单击 "高级",然后单击以选中 "包括从该对象的父对象继承的权限" 复选框。
-
单击 "应用",然后单击"确定"两次。注意 如果仍然无法启动 XBAP,请转到步骤8。
-
展开 " HKEY_CLASSES_ROOT",然后展开 "界面"。
-
右键单击 "{79EAC9C9-BAF9-11CE-8C82-00AA004BA90B}",然后单击 "权限"。
-
在 "组或用户名称" 下,单击受影响的用户帐户名称。
-
在 " 用户名的权限" 下,单击以选中 "读取" 权限的 "允许" 复选框。
-
单击 "应用",然后单击"确定"。注意 如果仍然无法启动 XBAP,请重复步骤6-7。 如果问题未得到解决,请对以下注册表项执行步骤9-12:
-
{79EAC9C1-BAF9-11CE-8C82-00AA004BA90B}
-
{79EAC9C4-BAF9-11CE-8C82-00AA004BA90B}
如果问题未得到解决,请转到步骤13。
-
-
在 Windows 资源管理器中,找到以下路径:
C:\Documents 和设置 \用户名\Local 设置 \
-
确定此路径下的以下文件夹是否包含名为 Desktop 的文件:
-
"应用程序数据" 文件夹及其 "部署" 子文件夹
-
"应用" 文件夹
-
临时文件夹
-
-
将桌面 .ini 文件重命名为另一个名称。
-
找到包含桌面 .ini 文件的文件夹,右键单击该文件夹,然后单击 "属性"。
-
在 "安全" 选项卡上,单击 "高级"。
-
单击以选中 "包括从该对象的父对象继承的权限" 复选框。
-
单击 "应用",然后单击"确定"。注意 如果问题未得到解决,请对列出的所有文件夹重复步骤14-19。
更多信息
PresentationHost 进程使用受限制的进程令牌运行。 该过程将在管理员安全组和 Power Users 安全组中提供成员身份。 在 Internet 区域沙盒中运行的应用程序不必拥有对这些安全组的完全权限。 此外,该过程还会提供许多 Microsoft Windows NT 安全权限。此行为是纵深防御的安全功能。 此功能的效果类似于当用户帐户控制处于活动状态时,在 Windows Vista 上运行非提升的进程的效果。在某些帐户迁移方案或操作系统升级方案中,可能会出现访问控制列表(Acl)的细微损坏。 这种损坏会导致特定用户帐户不会被明确授予对属于用户配置文件的某些文件夹或注册表项的访问权限。 出现此问题的原因可能是已禁用父对象上的权限继承。 此问题仅影响禁用组成员身份的应用程序。 例如,PresentationHost 应用程序禁用了组成员身份。已知此问题会影响以下注册表项或文件夹的权限:
-
类注册表项
-
IPersistMoniker 接口注册表项
-
以下路径中的某些文件夹:
C:\Documents 和设置 \用户名\Local 设置例如,"应用程序数据" 文件夹及其 "部署" 子文件夹、"应用" 文件夹和 Temp 文件夹将受到影响。
有关 Windows Presentation Foundation XAML 浏览器应用程序的详细信息,请访问以下 Microsoft 开发人员网络(MSDN)网站:
http://msdn.microsoft.com/en-us/library/aa970060.aspx有关 Windows Presentation Foundation 安全性的详细信息,请访问下面的 MSDN 网站:
http://msdn.microsoft.com/en-us/library/aa970906.aspx有关软件更新术语的更多信息,请单击下面的文章编号以查看 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)