FIX: You cannot start an XAML Browser Application that is created by using Windows Presentation Foundation in the .NET Framework 3.0 or in the .NET Framework 3.5

Symptoms

You cannot start an XAML Browser Application (XBAP) that was created by using Windows Presentation Foundation (WPF) in the Microsoft .NET Framework 3.0 or in the Microsoft .NET Framework 3.5. Additionally, if you browse the XBAP in compatible browsers, you may experience one of the following symptoms:
  • A blank browser window may appear. Additionally, a download dialog box appears that never stops downloading.
  • You receive the following error message in the browser:
    Deployment Failed
  • You receive an error message that states that the application crashed.
  • The PresentationHost.exe process and the browser may restart repeatedly.
Note Compatible browsers are browsers that support XBAP.

Cause

This problem occurs because of an abnormal condition that is caused in certain account migration scenarios or operating system upgrade scenarios.

Resolution

Download information

The following file is available for download from the Microsoft Download Center:
Download Download the XbapPermFix_sx.exe package now.
For more information about how to download Microsoft support files, click the following article number to view the article in the Microsoft Knowledge Base:
119591 How to obtain Microsoft support files from online services
Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help prevent any unauthorized changes to the file.

Prerequisites

No prerequisites are required.

Restart requirement

You do not have to restart the computer after you apply this hotfix.

Hotfix replacement information

This hotfix does not replace any other hotfixes.

File information

The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.
File nameFile versionFile sizeDateTimePlatform
Xbappermfix_sx.exe6.0.2600.085,02416-Jun-200803:20x86

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Workaround

To work around this problem, use one of the following workarounds.

Workaround 1

Delete and re-create the affected user account.

Workaround 2

Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows
Manually repair the permission settings. To do this, follow these steps:
  1. Click Start, click Run, type regedit, and then click
    OK.
  2. Expand HKEY_CURRENT_USER, and then expand
    Software.
  3. Right-click Classes, and then click
    Permissions.
  4. Under Group or user names, click the affected user account name.
  5. Under Permissions for
    UserName
    , click to select the
    Allow check box for the Full Controlpermission.
  6. Click Advanced, and then click to select the
    Include inheritable permissions from this object's parentcheck box.
  7. Click Apply , and then click
    OKtwo times.

    Note If you still cannot start the XBAP, go to step 8.
  8. Expand HKEY_CLASSES_ROOT, and then expand
    Interface.
  9. Right-click
    {79EAC9C9-BAF9-11CE-8C82-00AA004BA90B}, and then click
    Permissions.
  10. Under Group or user names, click the affected user account name.
  11. Under Permissions for
    UserName
    , click to select the
    Allow check box for the Readpermission.
  12. Click Apply, and then click
    OK.

    Note If you still cannot start the XBAP, repeat steps 6-7. If the problem is not resolved, follow steps 9-12 for the following registry keys:
    • {79EAC9C1-BAF9-11CE-8C82-00AA004BA90B}
    • {79EAC9C4-BAF9-11CE-8C82-00AA004BA90B}
    If the problem is not resolved, go to step 13.
  13. In Windows Explorer, locate the following path:
    C:\Documents and Settings\UserName\Local Settings\
  14. Determine whether the following folders under this path contain a file that is named Desktop.ini:
    • The Application Data folder and its Deployment subfolder
    • The Apps folder
    • The Temp folder
  15. Rename the Desktop.ini file to another name.
  16. Locate the folder that contains the Desktop.ini file, right-click the folder, and then click Properties.
  17. On the Security tab, click
    Advanced.
  18. Click to select the Include inheritable permissions from this object's parent check box.
  19. Click Apply, and then click
    OK.

    Note If the problem is not resolved, repeat steps 14-19 for all folders that are listed.

More Information

The PresentationHost.exe process runs with a restricted process token. The process gives up membership in the Administrators security group and in the Power Users security group. The applications that run in the Internet zone sandbox do not have to have the full permission to these security groups. Additionally, the process gives up many Microsoft Windows NT security permissions.

This behavior is a defense-in-depth security feature. The effect of this feature resembles how non-elevated processes run on Windows Vista when User Account Control is active.

In some account migration scenarios or operating system upgrade scenarios, subtle corruption of Access Control Lists (ACLs) may occur. This corruption causes a particular user account not to be explicitly given access to certain folders or registry keys that belong to the user profile.

This problem may occur because permission inheritance on the parent object is disabled. This problem only affects the applications that have the group membership disabled. For example, the PresentationHost.exe application has the group membership disabled.

This problem is known to affect the permissions for the following registry keys or folders:
  • The Classes registry key
  • The IPersistMoniker interface registry keys
  • Some folders in the following path:
    C:\Documents and Settings\UserName\Local Settings
    For example, the Application Data folder and its Deployment subfolder, the Apps folder, and the Temp folder are affected.
For more information about Windows Presentation Foundation XAML browser applications, visit the following Microsoft Developer Network (MSDN) Web site:For more information about Windows Presentation Foundation Security, visit the following MSDN Web site:For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates

Call stack information

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)
Properties

Article ID: 938714 - Last Review: Jun 20, 2008 - Revision: 1

Feedback