Tuesday, November 10, 2015

Deploy a customized Windows 10 start menu during deployment

Did you know that when deploying Windows 10, it's possible to copy a default start menu too? When using a Windows 10 image from media, the start menu is filled with apps you never use :) Therefore remove (almost) all apps, and fill it with apps you want to use!

The command used to export the start menu is: Powershell export-startlayout –path "<path>\LayoutModification.xml"

An example looks like this:
<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
      <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
        <start:Group Name="Office 2013" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\WINWORD.EXE" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\EXCEL.EXE" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\POWERPNT.EXE" />
        <start:Group Name="Applications" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\FastStone Capture\FSCapture.exe" />
          <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.InternetExplorer.Default" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0"
DesktopApplicationID="{6D809377-6AF0-444B-8957-A3773F02200E}\CCleaner\CCleaner64.exe" />

During deployment copy the LayoutModification.xml with the following command to make it available for all users:
copy /y LayoutModification.xml "C:\Users\Default\AppData\Local\Microsoft\Windows\Shell"

With that the start menu is active when logon after deployment. Very nice if you ask me! :) Only thing so far is Internet Explorer is missing from the start menu. Is there a way to place that in the xml file too? Hope to find a solution for that as well, because all other apps are added as expected!

Update: On Microsoft Community and ccmexec.com the answer is found. Just create a "Internet Explorer.lnk" and copy the file:
copy /y "Internet Explorer.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories"
A PowerShell script is available there too, which do the same thing! Just remember the script looks for StartMenu.xml

Within LayoutModification.xml change DesktopApplicationID="Microsoft.InternetExplorer.Default" to DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk"
After that Internet Explorer will shown up in the start menu!

Keep up the good work :)


  1. Hi, i have the same problem, LayoutModification.xml not working.

    on windows 10 64 pro

    if i force with gepedit.msc the layoutmodification.xml work but the user can't change the start menu.

    A idea ?


    1. Just use both the xml file and powershell script, and you will be fine!

      Hope it helps.

  2. No, too much work!!! Getting the IE icon to display is much simpler.

    Simply copy:
    %APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk
    %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\

    No need to edit the XML file. Why? Because the shortcut contains the proper AppID property.

  3. Using GPO forces the Start Menu layout, and the user cannot modify it. This is by design. Simply copy the xml file as described in this article to set the default layout and allow changes.

  4. Is there a way to use a wild card for file names?

    DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\GPS Utility\gpsu525.exe"

    When the application ( gpsu525.exe to gpsu527.exe ) gets updated then I have to remember to update the XLM. Is there a gpsu*.exe I could use?


  5. You can set layout in gpo and modify the xml allowing user changes. I will need to look for article

  6. https://blogs.technet.microsoft.com/deploymentguys/2016/03/07/windows-10-start-layout-customization/