
Updated 29/07/2015 – RTM day !!
Today, we will review the different technologies available to manage the good old new start menu (I mean the metro part). This blog post will cover most of the available methods from “supported” to “you’re on your own” because official solutions does not fit in every use case.
If you’ve been in the start screen “battle” during the Windows 8/8.1 general availability, you will find yourself very confortable with the start Menu as it is mainly a refresh of what was already in place for the start screen plus a bunch of new options to have even more control !
New capabilities
Before reviewing the different options available, I'd like to stress a major change in the start menu management: it’s now something that you can edit and customize by hand. You can still set it up on a machine and then export it for your deployments (my preferred way of working) but you can manually add or remove a tile, a group,a most used app, pin the Office suite, go full screen or select how much columns should your menu be. I won’t dive into all those options here, Microsoft has an awful article with a big load of details that you can read here. However, you'll find at the end of this post two of the most requested modifications : 1 column and Full screen menu.
Notice: If some tiles are missing after deploying your customized start screen, there is one thing you need to take care of: If you added tiles that require .url or .lnk files, you must add the .url or .lnk files to one of the following directories:
- %APPDATA%\Microsoft\Windows\Start Menu\Programs\
- %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
now, let’s check what can be done to deploy that start menu.
1 CopyProfile
The official method. Require, if you are using MDT, to pause you deployment and set up manually the tiles in your start menu before it can be grabbed to the default profile.- Pros : it’s supported
- Cons : require some infra (at least 2 VM)
- Cons : Slow and boring process ; you’ll have to sysprep and capture every time someone request an update, meaning that you also have to deliver a new reference image every time…
- Cons : Doesn’t works with SCCM out of the box
2 GPO
Microsoft has updated GPO to support the start menu. You can find the new setting in Administrative Templates\Start Menu and Taskbar\Start Menu Layout (in both user and machine section):Because the GPO require an xml input, Microsoft has also updated his PowerShell commands to import/export Windows 10 start Screen.
to create your xml use the following :
Export-StartLayout -Path C:\Temp\LayoutModification.xmlImplementation can be done in two ways ; using traditional domain GPO, or using SCM scripts to capture and restore local GPO.
- Pros : It’s supported
- Pros : Exist as local and domain GPO
- Pros : Can be applied without a domain/infra if you use local GPO.
- Pros : start menu can be captured from every where (no more admin/sysprep madness)
- Cons : You need at least one VM to capture and maintain you local GPO (if and only you use local GPO)
- Cons : require access right to the GPO console or to be “friend” with the GPO team (if and only you use Domain GPO)
- Cons : Users can’t change any item in the start Menu (Now you know why it’s a GPO !!)
3 Powershell (with a pinch of Aaron Parker)
This one is a funnier guy, but it opens our journey to the “unsupported” territory :As I said just before, Windows 10 is backed with Powershell commands to export start menu and start screen layout, but also to import them on a target computer. The big gotcha of the import command is his ability to only import layouts to an offline WIM image.
While this is technically acceptable (the default profile inside the WIM image is provisioned), this is heavily painful and impossible to automate during an MDT deployment.
Then entered Aaron Parker who demonstrated that the command just worked over a living online OS. Thanks to him for bringing back the automators frenzy into the game !
The export part is almost the same as the GPO one ; choose any windows 10 device, customize your start menu and capture it with the following command :
Export-StartLayout -Path C:\Temp\LayoutModification.xmlTo apply the menu during an MDT deployment, create a file named SetStartMenu.ps1 and fill it with this command line :
Import-StartLayout -LayoutPath C:\Temp\LayoutModification.xml -MountPath $env:SystemDrive\
Save it to the Scripts folder of your deployment share and insert a “Run Powershell Script” action anywhere after the first reboot (for instance, Custom Tasks is a good candidate) in your task sequence. The action should launch %SCRIPTROOT%\SetStartMenu.ps1 like shown in the screenshot.

Interesting fact : you can even get ride of powershell in your task sequence by simply copying the LayoutModification.xml file to the C:\Users\Default\AppData\Local\Microsoft\Windows\Shell folder.
- Pros : No need of an Active directory
- Pros : No need to maintain a reference image VM
- Pros : Solution of choice for OS Deployment !
- Pros : start menu can be captured from every where
- Pros : Changing the start menu every five minutes is now fast and painless
- Cons : Unsupported (sort of) with Import-StartLayout cmdlet, but supported with the copy process !!… don’t ask…
Customizing layoutModificaton.xml
Editing your start menu xml is now supported, so it is really possible to create a full menu from scratch ! Needless to say that this is a complete nonsense as you can just grab it in a second using PowerShell.However, some settings can’t be reached with this methods especially if you want to achieve one of those two goal:
- Setting the menu to 1 column
- Going to tablet mode (meaning start menu to full screen)
1 Column Menu
By default the start menu loads with two columns, you can change it to one.To set menu to one column, edit the layoutModificaton.xml file and add this code below the first line : <LayoutOptions StartTileGroupsColumnCount="1" />
this should looks like this:
Full screen Menu
To set your start menu to start screen à la Windows 8.1, edit the layoutModificaton.xml file and add this code below the first line : <LayoutOptions FullScreenStart="true" />this should looks like this: