Sync the Windows 10 Start Menu in VDI


NOTE: This is for Windows 10 builds before 1703.  Windows 10 1703 changes the storage location for the Start Menu. Learn more here

Windows 10 VDI. Of course it works. But one of the annoying things that really bothers me is not being able to customize my start menu.

My IT team created a standard start menu. It has 3 browsers, Paint.net, Notepad, Windows Media Player, plus much more stuff I never use.  I really, really, really want to customize this thing

So why can’t we roam the start menu between VDI sessions?

With Windows 10, the start menu is contained within an always active database file %localappdata%\TileDataLayer\Database\vedatamodel.edb. I tried using Citrix User Profile Management to sync the file, but it fails because the file is always active.

And then I was listening to Syn302 –  Keys to a Successful XenApp and XenDesktop User Experience where Shane Smith talked about customizing the Windows 10 start menu.  He said it is possible. And he said you just have to configure Citrix User Profile Management to sync the file %localappdata%\TileDataLayer\Database\vedatamodel.edb.

Really?  I tried that. It doesn’t work! Feller getting ANGRY

I reached out to Shane and he said he has it working. He sent me his policy so I could match it with my own. I tried again and again and again. Here are my results

  • Try 1: Fail
  • Try 2: Fail
  • Try 3: Fail
  • Try 4: Success
  • Try 5: Fail

Wait… What? Success?  What did I do differently?

On test 1, 2, 3 and 5, I modified the start menu and then told my Windows 10 virtual desktop to shut down. On test 4, I modified the start menu and told my Windows 10 virtual desktop to sign me out. So signing out works, but shutdown does not. Why?

My assumption is that even though I have my XenDesktop catalog configured to reboot after logoff, there is a slight delay between when my sign out completes and before the XenDesktop controller issues the shutdown command.  That delay is enough time for the start menu database file to not be active and to sync to my roaming profile.

Of course, this all happens fairly quickly.  In production, will there be enough time to sync the file before the desktop reboots?  I wonder if we can delay the reboot of a desktop by a few seconds after logoff. If so, I’m betting it will be configured with PowerShell.

I ran the following command: Get-BrokerDesktopGroup -Name “Windows 10 Desktop – Office Productivity”

And I found the following entry

SettlementPeriodBeforeAutoShutdown    : 00:00:00

Increasing this to 00:00:15 added the 15 second reboot delay I was looking for.

Want to try yourself? You need to do the following:

      1. Enable User Profile Management and synchronize the file %localappdata%\TileDataLayer\Database\vedatamodel.edb
      2. Add an Active Directory Group Policy to remove the Shutdown and restart option from the start menu: User Configuration\Policies\Administrative Templates\Start Menu and Taskbar\Remove and prevent access to the Shut Down, Restart, Sleep and Hibernate commands.
      3. Increase the time before the delivery controller issues a reboot command on a Windows 10 desktop after logout. Run the following PowerShell command:
         Add-PSSnaping Citrix*
        
         Set-BrokerDesktopGroup -Name "NAME_OF_DESKTOP_GROUP" -SettlementPeriodBeforeAutoShutdown 00:00:15

Daniel (Follow on Twitter @djfeller)
Citrix XenApp and XenDesktop 7.6 VDI Handbook
XenApp Best Practices
XenApp Video

 

Advertisements

3 thoughts on “Sync the Windows 10 Start Menu in VDI”

  1. I don’t understand this. You said a shutdown issued = failure and a logoff = success. Are you saying the solution is to remove user ability to shutdown and set the logoff to shutdown to 15 seconds to ensure enough time for the .edb to unload?

    Also, was this with streaming on or off?

    Thanks.

    Like

    1. I think you understood it. If user shut down the desktop, the sync of the file failed. If the user simply logged off, the sync worked. Even with logoff, the desktop will get shut down, but the delivery controller does it and not the user. And the delivery controller doesn’t do it immediately. It takes a few seconds to register that the user logged off. What i’m thinking is that if the user simply shuts down, there isn’t enough time between when the start menu file is no longer active and when the OS is killing processes (like UPM).

      Streaming was turned off. not sure if it will continue to work if streaming is on.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s