Easily customize Windows 10 Start Menu with Intune

Customize Windows 10 Start Menu layout with Intune

This blog post is to give you a quick walkthrough of how you can easily customize the Windows 10 Start Menu with Intune.

But before we begin, let us understand…

Why do we need to customize Windows 10 Start Menu?

Modern management of Windows 10 is just a high-level term. When broken down, you will find multiple components, each serving its own dedicated function, coming together to make it work.

From an overview, we can say that

  • Windows Autopilot takes care of streamlining the device provisioning.
  • Microsoft Intune (or any other MDM solution) takes care of deploying the company apps and policies to secure the device during device provisioning.
  • ESP (a component of Windows) helps to make sure that when the user gets to the Desktop screen, the device is ready with the policy-defined set of applications.
  • Windows Update for Business takes care of OS servicing.

and that’s modern management of Windows 10 for you!

However, one of the primary aspects of moving to modern management for your Windows 10 real-estate is to provide your users with a better User Experience, thereby aiding productivity without missing on security.

But once the device completes autopilot provisioning and the user is presented with the desktop screen, without any OS customization, is the device really ready to provide the User Experience that is expected from an enterprise device?

The answer sadly is No.

Sans any customization, the default Start Menu of Windows 10 (all SKUs) that the user gets upon first sign-in is not at all what we would expect from a work device – it is cluttered with the built-in apps and appears a complete mess!

The Start Menu has always been considered as an important aspect of the Windows experience.

Intune can help you to deliver a curated and clean Windows 10 Start Menu experience.

Prepare your Start Menu Layout and export it as an XML file

Prepare a Windows 10 machine to act as the reference device where you can create the Start Menu layout and then export it as an XML to be deployed via Intune.

Customize Windows 10 Start Menu with Intune - Prepare a Windows 10 endpoint to act as the reference device to create your custom Start Menu layout.
Customize Windows 10 Start Menu with Intune – Prepare a Windows 10 endpoint to act as the reference device to create your custom Start Menu layout.

Use an elevated powershell session and run the below command to export the curated Start Menu layout

Export-StartLayout -UseDesktopApplicationID -Path C:\StartLayout.xml

Note that the parameter -UseDesktopApplicationID can only be run on Windows 10 OS version 1809 and above.

If you do not use this parameter, the Export-StartLayout will use DesktopApplicationLinkPath in the resulting file which you would need to replace with DesktopApplicationID, otherwise, no icons will appear for desktop (win32) apps pinned to Start Layout.

Want to deploy a Start Menu layout that includes web links or secondary tiles (tiles for pinned edge websites) that displays a custom image?

If your custom Start Menu layout contains Secondary Tiles that displays custom image, then you would also need to export the associated EdgeAssets.
If your custom Start Menu layout contains Secondary Tiles that displays custom image, then you would also need to export the associated EdgeAssets.

You would need to export the associated Assets file (which contains the custom images for the pinned weblinks) along with the Start Layout using the command

Export-StartLayoutEdgeAssets -Path C:\StartAssets.xml

You should see the exported files in the location as specified by the -Path attribute.

The exported Start Menu layout (and associated assets) XML files will be found at the location as specified by the -Path attribute in the export command.
The exported Start Menu layout (and associated assets) XML files will be found at the location as specified by the -Path attribute in the export command.

For the purpose of this blog, I will not be using secondary tiles in my Start Menu layout.

However, you can check my colleague Hubert Maslowski’s excellent blog post on the same for your reference.

Modify the exported Start Menu layout XML for further customizations

You would need to edit the exported Start Menu layout XML file obtained from above for further customizations.

If you would want to customize the Taskbar pinned items, add the following line to the LayoutModificationTemplate tag.

xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout"

This is how the XML will look after you add the line.

<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" Version="1">
  <LayoutOptions StartTileGroupCellWidth="6" />
  <DefaultLayoutOverride>
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6">
        <start:Group Name="Company Apps">
          <start:Tile Size="4x2" Column="0" Row="0" AppUserModelID="Microsoft.CompanyPortal_8wekyb3d8bbwe!App" />
        </start:Group>
        <start:Group Name="Browsers">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="MSEdge" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Chrome" />
        </start:Group>
        <start:Group Name="Productivity">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="com.squirrel.Teams.Teams" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
</LayoutModificationTemplate>

Next, you would need to add in the code for each of the pinned items in the taskbar that you want to remain. The code for pinned items is placed in between the </DefaultLayoutOverride> and </LayoutModificationTemplate> tags in the exported Start Menu XML.

The code to add pinned items in the taskbar is as follows

 <CustomTaskbarLayoutCollection PinListPlacement="Replace">
   <defaultlayout:TaskbarLayout>
     <taskbar:TaskbarPinList>
  
       YOUR PINNED ITEMS INSERTED HERE
  
       [
  Use <taskbar:UWA> and AUMID to pin Universal Windows      Platform apps.
  Use <taskbar:DesktopApp> and Desktop      Application Link Path to pin desktop applications. 
       ]
  
     </taskbar:TaskbarPinList>
   </defaultlayout:TaskbarLayout>
 </CustomTaskbarLayoutCollection> 

By using PinListPlacement=”Replace”, we are removing all default pinned items from the taskbar and keeping only the Admin defined pinned items. Users will also be able to pin items to the taskbar. If you need more details, the process is documented very well here.

This is how the Start Menu Layout XML looks like at the moment with the Taskbar pinned items.

<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" Version="1">
  <LayoutOptions StartTileGroupCellWidth="6" />
  <DefaultLayoutOverride>
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6">
        <start:Group Name="Company Apps">
          <start:Tile Size="4x2" Column="0" Row="0" AppUserModelID="Microsoft.CompanyPortal_8wekyb3d8bbwe!App" />
        </start:Group>
        <start:Group Name="Browsers">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="MSEdge" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Chrome" />
        </start:Group>
        <start:Group Name="Productivity">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="com.squirrel.Teams.Teams" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
<CustomTaskbarLayoutCollection PinListPlacement="Replace">
      <defaultlayout:TaskbarLayout>
        <taskbar:TaskbarPinList>
          <taskbar:UWA AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" />
          <taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk" />
          <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
        </taskbar:TaskbarPinList>
    </defaultlayout:TaskbarLayout>
  </CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>

There is one final modification required to the above XML.

Since this XML will be deployed by Intune as a policy, by default users won’t be able to make any customization to this Start Menu layout. To let end-users make customization to the Start Menu without changing the defined sections that we are configuring, we need to add LayoutCustomizationRestrictionType="OnlySpecifiedGroups" to the <DefaultLayoutOverride> tag.

So the final XML in my case looks like this.

<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" Version="1">
 <LayoutOptions StartTileGroupCellWidth="6"/>
 <DefaultLayoutOverride LayoutCustomizationRestrictionType="OnlySpecifiedGroups">
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6">
        <start:Group Name="Company Apps">
          <start:Tile Size="4x2" Column="0" Row="0" AppUserModelID="Microsoft.CompanyPortal_8wekyb3d8bbwe!App" />
        </start:Group>
        <start:Group Name="Browsers">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="MSEdge" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Chrome" />
        </start:Group>
        <start:Group Name="Productivity">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="com.squirrel.Teams.Teams" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
<CustomTaskbarLayoutCollection PinListPlacement="Replace">
      <defaultlayout:TaskbarLayout>
        <taskbar:TaskbarPinList>
          <taskbar:UWA AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" />
          <taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk" />
          <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
        </taskbar:TaskbarPinList>
    </defaultlayout:TaskbarLayout>
  </CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>

Note that the applications specified in the XML should be available on your target device(s) to get the custom start menu layout presented as intended.

With the Start Menu layout XML file ready, we can now go ahead and create the Intune deployment policy.

Create Intune Policy for deploying the curated Start Menu

In the MEM admin center,

  • Navigate to Devices >> Windows >> Configuration profiles
  • Click Create Profile
  • Select Windows 10 and later as Platform
  • Choose Templates as Profile type
  • Select Device restrictions
  • Click Create
Create Intune Policy for deploying the curated Start Menu.
Create Intune Policy for deploying the curated Start Menu.
  • Give the profile a Name
  • Enter a Description (Optional)
  • Click Next
Create Intune Policy for deploying the curated Start Menu.
Create Intune Policy for deploying the curated Start Menu.
  • Scroll and select Start
  • Use the browse button to select the Start Menu layout XML file we prepared above.
If your Start Menu layout has secondary tiles with custom images, then you need to add the assets XML file in the following section juts below where you uploaded the Start Layout XML file.
Create Intune Policy for deploying the curated Start Menu.
Create Intune Policy for deploying the curated Start Menu.
  • You can choose to configure further Start menu items as highlighted in the image below.
Understand the Windows 10 Start Menu layout.
Understand the Windows 10 Start Menu layout.
Create Intune Policy for deploying the curated Start Menu.
Create Intune Policy for deploying the curated Start Menu.

There are many more configuration items that you can choose to configure as per your requirements. Once done, complete creating the profile and assign it to the required deployment group.

Create Intune Policy for deploying the curated Start Menu.
Create Intune Policy for deploying the curated Start Menu.

NOTE: You can use the new Filters option while making assignments. Check my previous blog post on the same to know more about the new filters option in Intune.

Intune Start Menu policy results – User Experience

End-users on their newly provisioned devices would be getting the Admin curated Start Menu layout and Taskbar pinned items as defined in the policy.

Customize Windows 10 Start Menu with Microsoft Intune - End-user to experience a clean and curated Start Menu layout upon first sign-in.
Customize Windows 10 Start Menu with Microsoft Intune – End-user to experience a clean and curated Start Menu layout upon first sign-in.

Now you would agree that this looks much cleaner than the default Start Menu that you get on a Windows 10 endpoint (any SKU) fresh out-of-box.

That was all for today.

More Information: