Workaround for missing start menu tiles after a Windows 10 1709 upgrade

I have noticed recently that some users that have upgraded from 1607 to 1709 have lost their Start Menu tiles during the upgrade. I did a lot of research on the Start Menu topic and could only find one article from Microsoft stating that they were replacing the TileDataLayer feature with something called the TileStore. You can see the list of features that are removed or deprecated in Windows 10 Fall Creators Update here.

I’m suspecting that there is an issue migrating the tiles to this new feature and it is causing the start layout to become corrupt during the upgrade for some users. I even have a ticket open with Microsoft concerning this issue but unfortunately it does not look like it will be fixed anytime soon.

So here is my workaround and hopefully it can help someone else.

First you will need to make sure to export every user’s start layout. I am doing this with a scheduled task that will run the following Powershell command:

Export-StartLayout –path $env:LOCALAPPDATA\LayoutModification.xml

This will export the user’s existing start layout and it will copy it to their %LOCALAPPDATA% folder.

Once you have given the scheduled task enough time to export everyone’s start layout, you can start the upgrade and run the following script at logon to bring back the user’s customized start layout:

If((Test-Path $env:LOCALAPPDATA\LayoutModification.xml) -eq $True) {
    Copy-Item $env:LOCALAPPDATA\LayoutModification.xml $env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml -Force
    Remove-Item 'HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$start.tilegrid$windows.data.curatedtilecollection.root' -Force -Recurse
    Get-Process Explorer | Stop-Process
}

Note: If you are experiencing this issue with 1809, you can run the following script to bring back the user’s customized start layout:

If((Test-Path $env:LOCALAPPDATA\LayoutModification.xml) -eq $True) {
    Copy-Item $env:LOCALAPPDATA\LayoutModification.xml $env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml -Force
    Remove-Item 'HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*$start.tilegrid$windows.data.curatedtilecollection.tilecollection'  -Force -Recurse
    Get-Process Explorer | Stop-Process
}

32 Comments

  1. How do you handle a computer with multiple users? Is there a way to export a person’s account that isn’t logged in?

    • Jose Espitia

      March 20, 2018 at 5:28 pm

      As far as I know there is no way to do this if the user is not logged in. Setting up a scheduled task weeks before your roll out should give you enough time to backup everyone’s start menu.

  2. Tony Perschall

    Jose,

    You are the man!!! I have spent countless hours fighting this using Microsoft’s recommended methods to no avail. This totally worked, and saved us lots of heartache! Thank you very much for figuring this out and for sharing it.

    Tony

  3. We are running into this exact same issue and I was on the verge of opening a case with MS. Did you ever hear anything back about it? PS great workaround I will have to give it a try!

    • Jose Espitia

      March 20, 2018 at 5:24 pm

      They asked me to try the latest 1709 ISO from VLSC but I just haven’t had time to test it since this workaround works 100% of the time. Please keep me updated if you hear of any updates!

      • Thanks! We are using the latest media. I actually tried the old original media thinking it was an issue with that. How were you kicking off the import? I am running the export as scheduled task, but creating a scheduled task for logon will re-import every time and revert any changes. Not sure on the best way to only run that once per user. Thanks for posting about this!

        • Jose Espitia

          March 20, 2018 at 8:16 pm

          I have been using the RUNONCE key to launch the script. This would ensure that it only runs once per user.

          • I was thinking of this as a solution, but I had 2 things I was unsure of. If I set the HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce registry doesn’t it only set for the user that is currently logged in during the TS or when the app runs? If the machine is shared I would need it to run for each every user. If I modify the default user hive this would only run for new users, wouldn’t it? Sorry to be a pain, just trying to come up with a last minute solution before our Prod roll out start next week 🙂

          • Jose Espitia

            March 21, 2018 at 6:19 pm

            HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce will only run for the current logged in user but you can write up a script that will scan through C:\Users and load every profile’s NTUser.dat so you can modify every user’s HKCU hive. You can also try adding the script to HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce. Let me know if you need any help and feel free to contact me via my contact page 🙂

  4. I just created an Active setup for the import!!

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Active Setup\Installed Components\RestoreStartmenu]
    “StubPath”=”powershell.exe \”c:\\Windows\\RestoreStartMenu.ps1\””

  5. Dear,
    I am getting access denied error while running import PS command in SCCM upgrade task sequence using run powershell script step.

    any thought?

    thanks,

  6. Hi all,
    I have two questions:

    1) I noticed that in this script we aren’t even using the Import-StartLayout cmdlet at all anymore. Can someone explain why we don’t need to use this anymore?

    2) If i manually run this command when logged in using my admin account it works perfectly. However, when run under a regular user account the custom pinned items do not show back up (the XML file i exported prior to the upgrade was from the standard user account). I temporarily made the standard user an admin but it still doesn’t work, so it doesn’t appear to be a permissions issue. Any suggestions?

    THanks!

    • Jose Espitia

      June 11, 2018 at 3:37 pm

      Eric,

      1. I’m not using Import-StartLayout because this PS cmdlet will only modify the default profile (It basically just copies your start layout to C:\Users\Default\AppData\Local\Microsoft\Windows\Shell). In order for this fix to work, we need to copy the user’s backed up start layout to %LOCALAPPDATA%\Microsoft\Windows\Shell\LayoutModification.xml. This will overwrite your default start layout that gets copied over when a profile gets created and overwrite it with the backup.

      2. Did you backup the user’s start layout before the upgrade? Please check %LOCALAPPDATA%\LayoutModification.xml to see if the user’s custom pins are in the contents of the XML file.

  7. I wanted to apply a custom start menu to existing users after a Windows 10 upgrade. The users would be upgrading to 1803, but I did not see HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$start.tilegrid$windows.data.curatedtilecollection.root present in the 1803 registry while it is on my 1709 system. Is there anyway to do this? On my 1709 system I tried copying over the relevant Start Layout files to the profile I wanted to change but no joy.

    This raises another question. I have used the Powershell comand to import a start menu layout for new systems, and I noticed a “mount path”, which I always set to C:\ – What exactly is that doing??

    • Jose Espitia

      June 11, 2018 at 3:27 pm

      Have you launched your start menu? I have noticed that the key does not get created until you launch the start menu for the first time. Also have you tried deleting HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\CloudStore?

      As for your second question, Import-StartLayout basically just copies your XML file to C:\Users\Default\AppData\Local\Microsoft\Windows\Shell.

  8. Ronald Montgomery

    Thanks for this information. Big help.
    To avoid adding a file to a package, I wrote a task sequence step to generate a command file on the machine. Sorry if it gets garbled in the posting.
    I call this with a RunOnce key after the upgrade. Tested it in a few machines. So far, so good. Please excuse any bad PowerShell practices.

    cmd /c powershell.exe -Command “$text = \”powershell.exe \” + \””If(Test-Path `$env:LOCALAPPDATA\LayoutModification.xml){ Move-Item `$env:LOCALAPPDATA\LayoutModification.xml `$env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml -Force; Remove-Item ‘HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\`$start.tilegrid`$windows.data.curatedtilecollection.root’ -Force -Recurse; Stop-Process -Force -Name ‘Explorer’ }\””; $text | Set-Content \”%ProgramFiles%\scripts\StartMenuRestore.cmd\””

    • Jose Espitia

      June 11, 2018 at 3:23 pm

      Good to know Ronald Montgomery! It’s always great to hear back from others on how they implemented the fix 🙂

  9. October 23, 2018

    I am looking for a way to make a copy of Windows 10 tiles (in stat menu).
    Maybe what you say would work but I am not familiar with the scripts.

    Do I need to copy your script: If (…} in a .vbs file?

    Can I run it when I logged in?

    I tried putting it in PowerShell and it did not work.

    This just copy the file
    C: \ Users \ xyz \ AppData \ Local \ LayoutModification.xml
    in the directory:
    C: \ Users \ xyz \ AppData \ Local \ Microsoft \ Windows \ Shell

    I modify the “Tiles” after to save “Original Tiles” in LayoutModification.xml.
    However, I do not see the Original Tiles that I save.
    Thanks.

    • Jose Espitia

      John,

      The script provided on my page is a Powershell script and not a VBS. In order to backup your startlayout you will need to run the following CMDLET:
      Export-StartLayout –path $env:LOCALAPPDATA\LayoutModification.xml

      To restore the start layout, you will need to copy the exported LayoutModification.xml to the user’s shell folder. Example in Powershell:
      Copy-Item $env:LOCALAPPDATA\LayoutModification.xml $env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml -Force

      Then you will need to clear out the CloudStore registry keys and restart explorer with the following CMDLET’s:
      Remove-Item ‘HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$start.tilegrid$windows.data.curatedtilecollection.root’ -Force -Recurse
      Get-Process Explorer | Stop-Process

  10. You rock! I’ve looked so long for this in those rare cases when a machine fails at the end of an upgrade and doesn’t apply my custom layout.

    Thanks!!

    • Jose Espitia

      Thanks Mark! I’m glad that this workaround helped you. This issue was pretty prevalent with our laptops which forced me to figure out a way to bring the start layout back. Now the techs also use this script to backup and restore tiles for users too.

  11. Hi Jose, thanks for sharing such a great workaround.
    I tried your workaround in my testing environment where the user profiles are moving from win10 1703 to win10 1709, it seems that all tiles and icons in start menu come back after executing your command except the calculator tile. Any ideas? Thank you!

    • Is it because I log into 1709 first then try executing your import command?
      It seems that the import command you provided should be executed before user log on , right?

      • Jose Espitia

        Xiao,
        You can do it while the user is logged on if you run the following script in Powershell:
        If((Test-Path $env:LOCALAPPDATA\LayoutModification.xml) -eq $True) {
        Copy-Item $env:LOCALAPPDATA\LayoutModification.xml $env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml -Force
        Remove-Item 'HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$start.tilegrid$windows.data.curatedtilecollection.root' -Force -Recurse
        Get-Process Explorer | Stop-Process
        }

        Keep in mind that the LayoutModification.xml file needs to be in the user’s local appdata.

    • Jose Espitia

      Xiao, Microsoft may have changed the shortcut path for the calculator. Can you check the XML file and verify that the calculator path does exist?

      • I can’t even see my start up menu and can’t log in to my computer since I changed my login frustrated and confused

  12. Is there any way to get to my start menu without using a disk I’ve tried 10 different ways and none have worked on my up laptop

  13. Super handy! Thanks for sharing this, Joe

Leave a Reply