Windows 10 Enterprise Deployment: Customizing the Task Bar and Start Menu

aravind ancheWindows/Vmware
Create a Windows 10 custom Image with custom task bar and custom start menu using XML for deployment.

Many organizations do not want their start screen to remain as it was given by the manufacturer. To also avoid confusion when migrating from one Windows version to another e.g. Windows 7 to Windows 10, they would like the Start Menu and Task Bar and the rest of the interface to look as similar as possible.

This article outlines for IT Professionals how to customize the Start Menu and Task Bar to help their end users adapt to changes in their IT ecosystem. 

Step 1: Install Windows on a Virtual Machine

Installing on a virtual machine allows for easier configuration and customization without the need for hardware.

  1. Create a virtual machine in Hyper-V or your choice of VM. 
  2. Install Windows 10. 
  3. Perform Windows installation normally until you reach the Settings dialog. This is the first dialog after the last reboot during the installation. Instead of choosing custom or express settings, login to "admin audit mode" by pressing and holding down the CTRL and SHIFT keys, and while still holding these keys down, press F3.

Step 2: Customize and Export the Start Menu Configuration (startmenu.xml)

  1. It will login using the built-in administrator account take you to audit mode. 
  2. Cancel the System preparation tool for now
  3. Do all the required customization of the Start Menu. Leave the Task Bar for now.
  4. Open powershell as an administrator and run the command
export-startlayout -path c:\startmenu.xml
  • It will create an XML file in C drive (startmenu.xml)

Step 3: Create your unattend.xml file

  • Either Install WAIK for Windows 10 and create your own unattend.xml file OR copy mine (see below).

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="" xmlns:xsi="">
<RegisteredOwner />
<RegisteredOrganization />
<cpi:offlineImage cpi:source="wim:D:/sources/install.wim#Windows 10 ENTERPRISE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />

** Important Note **: Modify the cpi:offlineImage section of the unattend.xml file to suit your environment.  That includes both the Windows version and also if your wim file is in different drive location.

I saved my unattend.xml file in the c:\windows\sys32\sysprep folder but you can save it to any location. 

Step 4: Create your answer file (unattend.xml)

In this step, you build a catalog and a new blank answer file (unattend.xml). A catalog file (.clg) is a binary file that contains the state of all the settings and the packages in a Windows image. Install windows AIK for windows 10 on technician computer.

  1. On your technician computer, insert the Windows 10 DVD into the local DVD-ROM drive. If we are using VM, the ISO will be in our DVD drive.
  2. On  technician computer, navigate to the \Sources directory on your DVD-ROM drive. Copy the Install.wim file from the Windows product DVD to a location on the computer.
  3. Open Windows AIK. On the desktop of the computer, click Start, point to Programs, point to Microsoft Windows AIK, and then click Windows System Image Manager.
  4. On the File menu, click Select Windows Image.
  5. In the Select a Windows Image dialog box, navigate to the location where you saved the Install.wim file, and then click Open.
  6. continue to step 2

Step 2: Add and configure Windows settings

In this step, you define basic disk configuration and Windows Welcome settings.

  1. In the Windows Image pane of Windows SIM, expand the Components node to display available settings.
  2. Select amd64_Microsoft-Windows-Shell-Setup_6.1.7600.16385_neutral into parse 4 specialize and on select copy profile to true.
  3. Save it as unattend.xml or anyother name, In my case I named it as unattend.xml and saved it in my sysprep folder.

Step 5: Import the Start Menu Configuration

Now the Start Menu needs to be set via Group Policy.  This can be set either via the machine's Local Group Policy OR via your company's Domain Group Policy.  

Note: Domain Policies will always overwrite any Local Policies.

In my case, I've used the Local Policy.

You can find the area to configure the Start Menu by running gpedit.msc from the Run dialog.

In the Policy Editor, navigate to Computer Configuration => Administrative Tools => Start Menu and Taskbar

In the right hand pane, click on Start Layout and click edit.  Enable the setting and enter the location of your startmenu.xml.

Step 6: Sysprepping

Open an Administrative command prompt and change directory to c:\windows\system32\sysprep.

Execute the following comment and the VM will finish sysprep and reboot.

sysprep.exe /generalize /oobe /Reboot /unattend:c\windows\system32\sysprep\unattend.xml

After booting it will ask to create a user profile.  Go ahead and create one and log on.

Step 7: Customizing the Task Bar

To unpin the Edge Browser and instead pin Internet Explorer (IE) on the Task Bar, add the XML below to the startmenu.xml file. If we want Firefox or any other browser add the shortcut link location to the xml file.

<CustomTaskbarLayoutCollection PinListPlacement="Replace">
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />        

Finally: Find the below XML for full layout. This

<?xml version="1.0" encoding="utf-8"?>
<LayoutOptions StartTileGroupCellWidth="6" />
<defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="">
<start:Group Name="Accessories" xmlns:start="">
<start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Snipping Tool.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="1" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk" />
<start:Tile Size="1x1" Column="2" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />
<start:Tile Size="1x1" Column="0" Row="1" AppUserModelID="Microsoft.Windows.Photos_8wekyb3d8bbwe!App" />
<start:DesktopApplicationTile Size="1x1" Column="1" Row="1" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="3" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="2" Row="1" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Wordpad.lnk" />
<start:Group Name="System" xmlns:start="">
<start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\computer.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="1" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="3" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Run.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="0" Row="1" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Remote Desktop Connection.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="1" Row="1" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Control Panel.lnk" />
<start:Group Name="Office" xmlns:start="">
<start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Access 2016.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Excel 2016.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="0" Row="1" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\OneNote 2016.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="1" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\PowerPoint 2016.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="1" Row="1" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Publisher 2016.lnk" />
<start:DesktopApplicationTile Size="1x1" Column="3" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Word 2016.lnk" />
<CustomTaskbarLayoutCollection PinListPlacement="Replace">
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />        

If there is no office installed it will still take the other settings e.g. exchanging Edge for IE on the Task Bar

Setting up an image like this saved so much time.  Hope this helps you as much as it did for me!!!

aravind ancheWindows/Vmware

Comments (2)

DJ, the powershell export command is now export-startlayout rather than export-startmenulayout as you say in your part 2 section above. :-)
aravind ancheWindows/Vmware


Thanks Jane I will update that

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.