Keepass crashes and fails to synchronize with UE-V


Keepass.exe fails to synchronize settings with Microsoft User Experience Virtualization 1.0 (UE-V 1.0) enabled and crashes on launch.  An error similar to the following will be reported in the Application log:

Log Name:      Application
Source:        Application Error
Event ID:      1000
Task Category: Application Crashing Events
Level:         Error
Keywords:      Classic
Faulting application name: KeePass.exe, version:, time stamp: 0x506d455e
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18015, time stamp: 0x50b8479b
Exception code: 0xe0434352
Fault offset: 0x0000000000009e5d
Faulting process id: 0x544
Faulting application start time: 0x01cdef9d0028ee0a
Faulting application path: C:\Program Files (x86)\KeePass2x\KeePass.exe
Faulting module path: C:\WINDOWS\system32\KERNELBASE.dll
Report Id: 3dff0aaa-5b90-11e2-bb4e-005056c00008
Faulting package full name: %14
Faulting package-relative application ID: %15

A UEV debug (ETL) trace will show a pattern similar to the following:

03:43:05.689 01-10-2013 11 1348 10232 16 2013-Jan-10 20:43:05.689 - Orchestrator: [10232]: INFO: An updated settings data package was not found to import for settings location template KeePass.
03:43:05.689 01-10-2013 2 1348 5540 16 2013-Jan-10 20:43:05.690 - AppAgent: [5540]: SCOPE: <-- SyncSettingsFromCentralStoreToLocalStore() [Settings successfully imported]
03:43:05.689 01-10-2013 2 1348 5540 16 2013-Jan-10 20:43:05.690 - AppAgent: [5540]: INFO: Calling monitored application's main entry point.
03:43:05.767 01-10-2013 102 4636 10872 0 The Agent Driver trapped the start of process WerFault.exe (ID 9752).


This crash occurs because UE-V and Keepass.exe both attempt to load different versions of the .Net runtime into the same process space when the UE-V agent DLL is injected in to the Keepass.exe process.


To resolve this issue, complete the following steps:

1. Open Notepad.exe in an elevated context by right-clicking on a shortcut to Notepad and choosingRun as administrator....

2. Select File\New... and create or edit a file named keepass.exe.config in the same folder as Keepass.exe (C:\Program Files (x86)\KeePass Password Safe 2 by default). Make sure to remove the .txt extension.

3. Copy and paste the following lines in to keepass.exe.config.  If the file exists, change the<startup> tag to <startup useLegacyV2RuntimeActivationPolicy="true">

<?xml version="1.0" encoding="utf-8" ?>
 <startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" />
  <supportedRuntime version="v2.0.50727" />
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <assemblyIdentity name="KeePass"
     culture="neutral" />
    <bindingRedirect oldVersion=""
     newVersion="" />
  <enforceFIPSPolicy enabled="false" />
  <loadFromRemoteSources enabled="true" />

4. Save the file and exit Notepad.

5. Re-launch Keepass.exe.