2017-02-11

Start using User Experience Virtualization (UE-V)

What is UE-V?

UE-V stands  for User Experience Virtualization and can be summarized as a replacement for roaming profiles. Whats the problem with roaming profiles you ask?

Roaming profiles

Well, login/logoff times for example. With roaming profiles ALL the files have to be copied from the profile server to the local computer every time you login and logoff. It doesn't matter if the files have changed or not, they will be copied. Settings will also only be copied when you logoff, so if you work on two computers only the settings from the computer you logoff last will remain.
In our student computer rooms we tried to shorten the logon/logoff times by applying three settings:
1. Folder redirections that moved Desktop, Document & all subfolders to the users home folder on the file storage server. That way those folders does not have to be roamed.
2. We set a roaming profile size limit.
3. We configured a lot of "excluded folders" that did not roam. That helped a lot but had to be configured for all new programs and it was still a mess.

What would usually happen was the students profile became full due to the amount of programs that all created a lot of files in APPDATA. For example, MS Office created a template folder with about 50MB data, and with a profile max size of 50MB it was full immediately. We had to increase size to 100MB. Then they used some web browsers and some scientific software and boom, profile got full again. When the profile was full they could not logoff until they had cleared some files. Students 1. Don't care about this. 2. Don't know how what files to clean. That resulted in them turning off the computer the hard way just to be able to "logoff". That resulted in the ntuser.dat became corrupt in many cases and life was a mess.

Here is a technet HOWTO for roaming profiles so you can read about what you should not use. ;)

Whats the pros?
  • Its included in all Windows versions since at least Windows XP.
  • It is kind of easy to setup using GPOs.
Whats the cons?
  • All files sync on login/logoff.
  • Long login/lofff times.
  • Problems with some programs using APPDATA in a bad way.
  • Large profiles on servers unless you limit the profile max size.
  • Problems with corrupted profiles if you set the profile max size limit.
  • Does not play well with Windows 10.

UE-V

What you do with UE-V is kind of the opposite of roaming profiles.
You create a template for each program and define one or more processes and what folder/registry paths should be "roamed". When the process starts, the UE-V engine will check for settings in the UE-V-Settings location and download them to local cache. Then the settings will be applied to the system and the program will start.
When the program exits, UE-V will take all the settings, make a "blob" and send them to the settings location. This means you can work on multiple computers and still get the latest versions of your settings, as long as you close the program on all the computers in the right order.
And thanks to the compressed blobs, download speed is increased.

Whats the pros?
  • From Windows 10 1607 UE-V is included in all Enterprise/Education licenses and you don't need a subscription to Microsoft Software Assurance Program.
  • The UE-V client is included with Windows 10 1607.
  • Fast login times.
  • Program settings "roam" when started/stopped.
  • You can use the UE-V "Sync provider" and file servers or use Dropbox/Google Drive/Onedrive and a local folder for the user settings.
  • Very easy to start using.
  • You can make a lot of templates because only settings for the programs the user runs will be "roamed".
  • Use multiple computers at the same time without worry to loose the settings because the wrong computer was logged off last.
Whats the cons?
  • You have to create a template for every program you want to "roam".
  • Since the settings have to be downloaded before the program is allowed to start, some programs with large "APPDATA" will become slow to start.
  • For Windows versions older than Windows 10 1607 you need to download MDOP and install the UE-V client on all clients.
Microsoft Desktop Optimization Pack (MDOP) is a suite of utilities for Microsoft Windows customers who have subscribed to Microsoft Software Assurance program.

Setup UE-V

I choose to do this with a GPO, but you can use powershell as well.
One thing you should know is that from Windows 10 1607, the UE-V client does not interact with the user anymore. There are some GPO settings for notifications etc that will not do anything even if you set them.
All the following GPO settings are stored in the registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\UEV\Agent\Configuration

For some reason I could not find the latest UE-V admx-files for Windows server. I had to copy them from a newly installed Server 2016 (we still have not upgraded domain servers to 2016, this is in the pipe for this year).

Open this location:
Computer Configuration > Administrative Templates > Windows Components > Microsoft User Experience Virtualization

Configure Sync Method
SyncProvider - This setting allow you to use the built in UE-V client to sync the settings from the local cache to the file server where you want the settings to be stored.

None - This will force UE-V to write the settings directly to the file server without any local cache. I havn't tried this, but it requires a stable network at all times.

External - Set this if you want to use Dropbox, Google Drive, Onedrive, Work Folders etc.

Enable UEV
This is a strange one, it doesn't do anything to Windows 10 1607. Maybe it have to be used for earlier versions of Windows. I don't know.
Use User Experience Virtualization (UE-V)
This is the main switch for Windows 10 1607.
Ping the settings storage location before sync
Enable this if you have a file storage server as storage location.

Settings storage path
This is the location where the UE-V sync provider will create the folder for the settings.
\\fileserver\storagepath\%USERNAME%
UE-V Will create a folder called "SettingsPackages" in this folder and then each program will get its own subfolder.
If you use Onedrive as sync provider you could set this to:
%OneDrive%\UEV
During testing, I made the %OneDrive%\UEV-folder hidden to not confuse the test users.

Settings template catalog path
This is the folder where the templates are stored: \\fileserver\uevtemplates
I plan to use a fils server location for this, but I am also testing to let at GPO sync all the templates to a subfolder to %PROGRAMDATA%. I'm not sure that is a good idea yet, that's why its called testing.

Synchronize Windows Settings
If you generate background pictures with information about the computer, you may not want to roam "Themes". I have still not seen these settings create a UEV-package during testing.
It seems that there are default templates located in:
%ProgramData%\Microsoft\UEV\InboxTemplates
I will begin testing to see if I can get the Windows Settings to sync.

When you are done it should look something like this.

Settings using Powershell

I use this on my test-computer that is not joined to a domain.

First we need to import the module:
Import-Module UEV

Then you can make all settings in one command like this (make sure to change the paths):
Set-UevConfiguration -SettingsStoragePath "%USERPROFILE%\UEV" -SettingsTemplateCatalogPath "C:\UEVTemplates"  -Computer

Verify that settings have been applied:
Get-UevConfiguration

And activate UEV:
Enable-Uev

And verify:
Get-UevStatus
Key               Value
---               -----
UevEnabled         True
UevRebootRequired  True


Create UE-V templates

UE-V Templates can be either downloaded or generated. When I wrote this there are some templates at Microsoft technet, but I found that for non-Microsoft software they are mostly outdated or just bad. (For example, the Thunderbird template was made to roam the user profile on the creators computer. Profiles have a random name and also includes local cache of all mails. you dont want to roam everything!)
There is a "Microsoft User Experience Virtualization (UE-V) Template Generator" included in the Windows ADK 1607.
You can choose only to install the UE-V Template generator and the installation is very small.
I wont go into details on the wizard, because its a wizard and you are probably a Windows pro-user.
There is a guide on how it works here.

One problem I have to address is the problem I have with the Template Wizard crashing at random.
Two fresh Windows 10 installations, on one of them the wizard works just fine and on the other it crashes. I cannot find anything that would make the other work and the other not, same default settings and same "Windows Defender" etc.


Some tips when using the Wizard:

  • The wizard say you should just close the program as soon as it has started. I find it better to toggle some settings in the programs before I close it. That way the AppMonitor have a better chance to find all settings locations.
  • Sometimes you will get a ton of results, where many files are listed separately instead of en entire folder or registry key. I just unselect all and choose one of them for each "base" folder/key. In the last step of the wizard you can edit these and make them recursive.
  • The wizard often select a folder one level to high. For example:
    %APPDATA%\CompanyName
    instead of:
    %APPDATA%\CompanyName\ExamplesoftwareIf the company only make one software it may be fine, but if they have multiple software, you don't want all software settings in all of the templates.
  • Make sure you don't select any folders with cached information, like browser cache etc.
  • The wizard is very limited and can only create templates for one process at a time. You can just add more if you edit the file manually. In this example OBS Studio:
    <Processes>
       <Process>
          <Filename>obs32.exe</Filename>
       </Process>
       <Process>
          <Filename>obs64.exe</Filename>
       </Process>
    </Processes>
  • There are also a lot of additional settings you can apply like folder exceptions etc, but I haven't had time to try them yet. As soon as I have, I will update this text.

Force reload templates on test-client

From what I have been told, templates are reloaded every 22hours. When you are testing new templates you want them to become applied in an instant.
On the computer you create/test UE-V on. After modifying or creating new tempelate, run this command to reload all templates.

In an Administrators Windows Powershell:
Unregister-UevTemplate -All ; Register-UevTemplate '\\SERVER\SHARE\UEV\Templates\*.xml'

To see what templates are loaded
Get-UevTemplate|Sort-Object -Property TemplateID|Format-Table

When testing I noticed that sometimes settings wont sync if you deleted folders while testing. I think the syncprovider gets confused. That can be fixed by deleting the local cache folder for the UE-V template you are testing. They are located under:%LocalAppdata%\Microsoft\UEV

You can now find my UE-V templates in my GIThub repository