Management of Start Menu and Tiles on Windows 10 and Server 2016, part #2

This is the second part of the article on Windows 10/Server 2016 Start Tiles management.

The first part of this article is available here. The primary focus of part #1 was delivering a pre-arranged Start Tiles layout to the user, in a number of different ways to meet different requirements. Now, the second part of the conundrum we set ourselves was not just how to deliver customized default Start layouts, but also how to save and persist them once the user had elected to make changes. Because in a non-persistent VDI or RDSH environment, one isn’t very useful without the other! Also, whether you’re in a non-persistent environment or not, you may want to save and roam them anyway. The methods we used for supplying default layouts in the first part of this article will all work with the techniques/tools specified here for saving and persisting, with the obvious exception of method #2, which enforces a non-customizable layout every time you log in. Methods #1 and #4 only apply at first user logon, whereas method #3 will add the “enforced” icons to whatever you have saved. To cover all eventualities, we are going to do our persistence testing on the following items:
  1. An App-V shortcut
  2. A pinned folder from the local filesystem
  3. A pinned RDP connection
  4. A web shortcut
  5. A UWP app shortcut (on Windows 10 only, UWP apps not available on Server 2016)
  6. An “expandable” Tile with three web shortcuts in it (Windows 10 only, not supported on Server 2016 yet)
  7. A “legacy” desktop app shortcut
  8. A pinned Microsoft console document
  9. The title for an app group
That should allow us to cover all the wonderful things users are likely to pin to their Start Tiles. They are all referenced with a key in the image below. But first, a quick recap on how the Start Tiles data is actually saved.

Architecture

In earlier versions of Windows 10, Microsoft elected to use a database file to save the Start Tiles data. It was called vedatamodel.edb and sat in %LOCALAPPDATA%\TileDataLayer\Database. It was also linked to the Tile Data Model Server service and the State Repository Service, both of which maintained hooks into the database file that prevented easy saving. Come Windows 10 version 1703 and Tile Data Layer was listed as “deprecated”, meaning no further development was being undertaken. Under the hood, it transpired that Microsoft had fallen back on a more familiar way of saving the settings, storing Registry values alongside filesystem data. The values and files in question were:-
  • HKCU\Software\Microsoft\Windows\CurrentVersion\CloudStore
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\SlowContextMenuEntries
  • HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager
  • {CSIDL_PROGRAMS} (which on these OSes normally maps to %APPDATA%\Microsoft\Windows\Start Menu\Programs)
However, Server 2016 still (currently) uses the TileDataLayer method, so for any of these tools or techniques that specifically grab defined settings rather than scooping the entire profile, there may have to be sub-sections by OS. For Windows Server 2016 you need to grab the following:-
  • %LOCALAPPDATA%\TileDataLayer\Database
There may also be caveats around how to actually save this – we will test it individually with each of the methods listed below. So it’s now simply a question of setting up your preferred way of grabbing these settings and reapplying them. Let’s test some of the more popular methods:-

Methods of persistence

FSLogix Profile Containers

I’ve already mentioned that FSLogix Profile Containers is currently one of my favourite bits of technology. And it wouldn’t be one of my favourite bits of technology if anything was hard đŸ™‚ Suffice to say, using FSLogix Profile Containers in the same default config we shared in the first part of this article (because it grabs the entire profile) means that all of our Start Menu and Start Tiles settings roam without issue. This works on both Windows 10 1803 and Server 2016 – no special configuration required.

Microsoft User Profile Disks

With the results in from FSLogix, there probably wasn’t any need to repeat the tests we did with UPD, given that FSLogix and UPD share a lot of similarities in operation. UPD is a much more cut-down product, both in terms of features and OS support, but the initial operation – the mounting of a VHD from the root of a user profile – remains the same. So no surprise if I tell you that UPD manages to roam the settings without any issues, much the same as FSLogix.

Ivanti User Workspace Management

Next we have Ivanti, a far more broad suite of user environment management products, but one that not surprisingly has a bit more overhead in terms of setup, infrastructure and support. Ivanti UWM’s Environment Manager feature operates more targeted than the likes of FSLogix and UPD, capturing specifically the settings that you wish. So, we have set up a Windows Personalization Group in the Personalization Server feature which captures the following filesystem and Registry settings:- For Windows 10 1803, this works absolutely perfectly. However, because Server 2016 still uses the TileDataLayer component, you need to create a Windows Settings Group for Server 2016 that includes the following:- {CSIDL_LOCAL_APPDATA}\TileDataLayer\Database The built-in Windows Settings Group for Start Menu can handle this, if required, although it may need fine-tuning on the Conditions side, otherwise you may get conflicts between the settings for Windows 10 and Server 2016 (assuming you were using both of these OSes in your user environment). If you are accessing both Windows 10 and Server 2016 instances, it is best to separate these into two disparate settings groups, as there is some overlap between both.

Citrix User Profile Management

Citrix User Profile Management succeeds in roaming the Windows 10 1803 with near-to-default settings. The basic settings I used for FTA management in Windows 10 (shown below) also work for Start Tiles management. Server 2016 is slightly anomalous. Although the database file is captured, there is a little corruption observed when roaming to a new system (shown below), mainly that icons are blank for some of the shortcuts To get around this, you need to set the TileDataLayer folder to sync rather than capture it in the normal UPM way. Here are the settings required to make this work for Server 2016:- Once the UPM config is adjusted in this way, Server 2016 roaming works perfectly. Update for later Windows 10 versions – you now need to configure the settings as below for UPM to roam correctly:-

Microsoft roaming profile

Given that all you require is to grab the local user Registry and the Programs folder, you’d expect a standard Microsoft roaming profile to work, on Windows 10 1803 at least. However, this doesn’t appear to be the case. Even with the GPOs applied that prevent a roaming profile from being “re-initialized”, the Start Menu either stubbornly resets itself to whatever is defined in the default user profile at every logon of a roaming profile user, or appears corrupted. I’m not entirely clear on the reason for this – I was expecting it to work. However, it does appear clear that when using a standard roaming profile (or mandatory, for that matter), nothing is ever written to the CloudCache Registry key we mentioned earlier, which is odd. It seems that when using a roaming profile writes to this Registry key are disabled. It also seems as though the {CSIDL_PROGRAMS} folder only roams partially, appearing on the Start Menu but not the Start Tiles. If my gut feeling is right on this, that a roaming profile is prevented programatically from writing to CloudCache, then the Tiles will never be able to roam. Because Windows Server 2016 still uses %LOCALAPPDATA%, and this is never present by default in a roaming profile, then Server 2016 won’t work out-of-the-box for a roaming profile either. You can use this method to get it to work (this was written for earlier Windows 10 versions but works without issue on Server 2016), but because of how it is configured, it is not very sustainable in the long term. So roaming profiles simply don’t work for this, which is disappointing because they now work OK for FTAs, but they’re still not capable of doing what they say on the tin!

VMware User Environment Management

VMware User Environment Management (VUEM) was an acquisition of a company called Immidio, and a technology which I (for reasons of time only) missed out when dealing with FTAs. However, when it comes to dealing with the Start Tiles you can manage this with VUEM by using this configuration:- However since version 9.4 has been released there is a pre-defined Windows Setting you can leverage to do this for you rather than create it specifically as I have done above. This creates all the required settings for you automatically. For Server 2016, this obviously needs to be adjusted slightly, because we need to grab the TileDataLayer files. VMware UEM does not manage this natively, but always-helpful VMware bod Pim van de Vis wrote a blog article that will show you how to achieve this by using a PowerShell script (the blog says Windows 10, but the method should work on Server 2016 too).

Microsoft User Experience Virtualization

UE-V didn’t originally manage to roam Start Tiles settings on Windows 10, but you can use this article to get it working to some degree on the 1709+ versions. There are some discrepancies as mentioned in the link – however, removing the Caches folder entry does sometimes rectify this. This does not work on Server 2016, however, as it still uses the TileDataLayer which UE-V cannot handle.

Summary

So, if you want smooth roaming of your settings on Windows 10 1803 and Server 2016, you will need a third-party tool. In this testing, FSLogix Profile Containers, Ivanti DesktopNow and Citrix User Profile Management work the best for this, I’d choose one of these. VMware User Environment Management manages Windows 10 without issue, as long as it is the later version, it can do Server 2016 as well but this is a little hacky. User Profile Disks works passably for both but is limited in a number of ways and can become problematic if the VHD locks. It is, though, the only no-cost solution that actually works for our test parameters. Microsoft User Experience Virtualization can only do Windows 10 later versions, but is a little unreliable, and can’t do Server 2016 at all currently. Roaming profiles, even though I don’t see a reason why they shouldn’t work, seem to be incapable of saving the required data simply because they are a roaming profile. Very odd, but roaming profiles have never been high on Microsoft’s priority list. There are a couple of technologies I meant to test but didn’t have time to – LiquidWare Labs ProfileUnity and Scense. I’m pretty sure these should be able to do Windows 10 at the very least and possibly Server 2016 as well. Unfortunately I ran short of time but may add testing sections for these in the future. However if you are using one of these or even another tool or maybe even rolling your own method, the Registry items and filesystem entries specified in this article should allow you to save and roam the settings without issue. More articles coming soon – stay tuned.

Loading

6 comments

  1. Hi James, so this seems to be working 99% when i’m using Citrix Profile Management but when a user changes VDI machine to another new one, the start menu does roam but the tiles move location and the group names dont roam. Everything else seems to work fine

    any ideas? I am pre configuring the start menu with a modified layout XML file which on first logon the layout is perfect, its just when i then log onto a second VDI machine, its looks a little different

    thanks

    Steve

    1. So is it failing to roam after the user makes changes, or simply changing from the default when they move between machines?

  2. Just a quick note that although this article says User Profile Disks is the only no-cost option here, obviously now that Microsoft own FSLogix then Profile Containers is also a no-cost option, and I would choose this over UPD any day of the week.

  3. Did you ever have any issues where UWP Apps are corrupted when using FSLogix?
    On the affected account, all seem to go to strange names

    1. That usually means the deployment has failed. Unusual it should appear with FSLogix – a) are you on latest version, and b) do you have the “allow deployment operations in special profiles” GPO set? Should normally only affect roaming or mandatory profiles, but…..worth a try maybe

Leave a Reply

Your email address will not be published. Required fields are marked *