Menu
CCMEXEC.COM – Enterprise Mobility
  • Home
  • General
  • Configuration Manager
  • Windows 10
  • Windows 11
  • Intune
  • GitHub
  • About
CCMEXEC.COM – Enterprise Mobility

Customizing the Windows 10 Start Menu and add IE Shortcut during OSD

Posted on September 30, 2015November 23, 2017 by Jörgen Nilsson

In my last post I wrote about how to make Internet Explorer the default web browser in Windows 10, now I will cover how to deploy a customized Start Menu during deployment and add a menu item for Internet Explorer the last took a while to figure out how to add the shortcut to Internet Explorer. There are many more ways to customize the Start Menu, deploy it as a mandatory Start Menu using Group Policies in that case the user cannot modify it.

Update 20160412: The IE shortcut is removed from the file system when upgrading to the next Windows 10 release, investigating why.

Let’s start with the basic information, the default Start Menu template is located here:

C:\Users\%username%\AppData\Local\Microsoft\Windows\Shell\DefaultLayouts.xml this file should not be modified. To modify the start menu we use file called LayoutModification.xml that should reside in the same directory. This file can be used in many ways for OEM’s to add icons to the Start Menu or for us IT-Pro to override the default Start Menu. More information on how to use these files can be found here on MSDN: https://msdn.microsoft.com/en-us/library/windows/hardware/mt171092(v=vs.85).aspx

Exporting a customized Start Menu layout

To export the Start Menu we start by using a computer and a user and adjust the Start Menu on that computer so it looks the way we want it.

StartMenuMod2

Then we use Powershell to export a customized start menu using the following command, Export-Startlayout –path C:\Windows\Temp\Startmenu.xml

StartMenuMod1

Then we have a .xml file with our current Start Menu Layout that looks like below that will override the default start menu defined in the DefaultLayouts.xml in Windows 10.

StartMenuMod3

Import a Start Menu layout using Powershell

Now that we have an exported Start Menu we can import it using Powershell. All users that log on to the machine the first time will get this Start Menu layout that you import.

Import-StartLayout –LayoutPath C:\Windows\Temp\Startmenu.xml -MountPath $env:SystemDrive\

StartMenuMod5

After the command is successfully completed the Layoutmodification.xml file is created here: C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\Layoutmodification.xml

StartMenuMod6

When we log on to the computer as a “new” user that haven’t logged on the computer before we get the newly imported Start Menu as shown below.

StartMenuMod8

But wait, where did the Internet Explorer icon that we added before go?

 

Solving the Internet Explorer icon issue

When we export the file above it exports the Internet Explorers ApplicationID in the .xml file. This will fail when you import it as the Internet Explorer icon doesn’t exist in the users Start Menu folder or as an application during when the Start Menu is imported. It doesn’t exist in the Default start menu folder either and it is not present as an ApplicationID when the Start Menu is imported and therefor it will not show up in the users Start Menu.

To solve this we need to do two things, add a .lnk file that points to Internet Explorer somewhere that all end-users can reach it. I will create it in C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories

StartMenuMod9

Then we need to change the information in the exported .xml file as well. The following line in the .xml file needs to be replaced with a pointer to the .lnk file instead of the ApplicationID.

DesktopApplicationID=”Microsoft.InternetExplorer.Default”

So we replace it with the following line instead, using the DesktopApplicationLinkPath instead and pointing to the Internet Explorer.lnk file we created before.

DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk”

****Update: As per requested a sample file can be downloaded here with Office 2013 and the IE shortcut: StartMenu.xml****

If we then log on as a new user once again we get the Internet Explorer icon on the Start Menu as well as intended.

StartMenuMod11

Applying the Start Menu during OS deployment

To deploy this I have written a simple Powershell script that imports the StartMenu.xml file and copies the Internet Explorer link we created before.

The Powershell Script content:

Import-StartLayout -LayoutPath $PSScriptRoot\StartMenu.xml -MountPath $env:SystemDrive\

Copy-Item -Path $PSScriptRoot'\Internet Explorer.lnk' -Destination $env:SystemDrive'\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories'

I then place the Powershell script in a folder together with the exported Start Manu and the Internet Explorer.lnk file.
StartMenuMod12
Then we create a package of that folder in Configuration Manager with no program as we use the Powershell step in the Task Seqeunce to execute it and distribute it to the Distribution Points. And add a step in the task sequence to run the Powershell script as shown below.
StartMenuMod13

Then you are ready to test the deployment of a customized start menu including an Internet Explorer icon.

117 thoughts on “Customizing the Windows 10 Start Menu and add IE Shortcut during OSD”

  1. Mike says:
    September 30, 2015 at 11:24 am

    Excellent! I’ll give it a go later today.
    Nice work and thanks for sharing!

    Reply
  2. Mike S. says:
    September 30, 2015 at 3:40 pm

    Works flawlessly! Thank you so much!

    Reply
  3. Patrick says:
    September 30, 2015 at 9:43 pm

    Very nice! I attempted this a few weeks ago, but didn’t make the DesktopApplicationLinkPath change. That explains it all. Thanks!

    Reply
  4. Olof says:
    October 2, 2015 at 9:18 am

    Thank you! Worked like a charm!

    Reply
  5. Matx says:
    October 2, 2015 at 1:58 pm

    Thank you 🙂

    Reply
  6. Jana Smutna says:
    October 7, 2015 at 5:28 pm

    Please XML sample to download.

    Reply
    1. Jörgen Nilsson says:
      October 12, 2015 at 10:50 pm

      Hi,
      good idea, I have added a sample .xml and updated the post!
      /Jörgen

      Reply
  7. Frank M says:
    October 8, 2015 at 12:03 pm

    I followed the instructions for the Windows 10 start menu and it all worked fine – many thanks!

    There’s just one trap, if you copy the string DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk”

    from above mind the quotes (”), they are cursive and caused an error when running the powershell command.

    Reply
  8. eric schloss says:
    October 29, 2015 at 9:43 pm

    Great post. I’m in the early stages of getting a Windows 10 Enterprise image going for testing. I ran through your guide today and found that I did not need to create the Internet Explorer shortcuts and change the pointer info for the pinned IE. My exported start layout has the path for IE as DesktopApplicationID=”{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Internet Explorer\iexplore.exe” instead of DesktopApplicationID=”Microsoft.InternetExplorer.Default”. I have applied the latest cumulative update for Win10, so maybe the behavior has recently changed.

    Reply
  9. Mike says:
    November 9, 2015 at 9:49 pm

    Another excellent post, Jörgen!
    I cannot wait to give this a try.
    Thanks for the info!

    Reply
  10. orion says:
    November 10, 2015 at 7:33 pm

    I am using MDT 2013 update 1. I am trying to run under postinstall, right after configure but getting error. tried after add windows recovery (winre) with no luck.
    So I create folder under script, and running as command line (powershell.exe -executionpolicy bypass -File “%SCRIPTROOT%\Start-Layout-win10\ImportLayout.ps1”), getting error.

    Where to run this script in mdt 2013????

    Reply
  11. X6205 says:
    November 27, 2015 at 4:44 pm

    I have followed your guide exactly but i always get error about invalid layout file.

    Reply
    1. Jörgen Nilsson says:
      December 2, 2015 at 4:44 pm

      Hi,
      If you copy and paste from my blog post check the ” characters so that they are correct they normally would go wrong.
      /jörgen

      Reply
  12. CpA says:
    December 2, 2015 at 2:13 pm

    It’s seems that this procedure is not working on the new update 1511 version.
    It’s like there is a script that install all the windows app things (like 3D builder, skype, mail, and all Metro staff)…

    Reply
    1. Jörgen Nilsson says:
      December 2, 2015 at 4:39 pm

      Hi,
      I just tried it out and it worked just fine, what are you seeing? Is the machine upgraded to 101586 inplace?
      /Jörgen

      Reply
  13. Dave says:
    December 4, 2015 at 4:07 pm

    Great article. The resulting .xml file can also be deployed via group policy:
    User Configuration -> Administrative Templates -> Start Menu and Taskbar -> Start Layout

    Awesome tip regarding the rogue internet explorer shortcut!

    Reply
  14. Pingback: Win10: Start Menu Cleanup using DefaultLayouts.xml | David Segura
  15. GraceSolutions says:
    December 9, 2015 at 10:06 pm

    I use MDT heavily in the workplace and have developed the following scripts that should in almost any environment. Go the following links and read the descriptions. Have a blessed day folks, I hope this helps somebody!
    Script to modify “DeployWiz_ComputerName.vbs” to support “FriendlyNames”
    https://community.spiceworks.com/scripts/show/3430-custom-modify_deploywizcomputername
    Script to generate “DomainOUList.xml” from Active Directory with or without “FriendlyNames”
    https://community.spiceworks.com/scripts/show/3426-custom-domainoulist_create-ps1
    Script to join the current workstation to Active Directory Domain
    https://community.spiceworks.com/scripts/show/3374-custom-ztidomainjoin-ps1
    Script to move the current workstation to the specified OU during deployment
    https://community.spiceworks.com/scripts/show/3375-custom-ztimoveadcomputer-ps1

    Reply
  16. Pingback: Windows 10 Deployment Tips and Tricks | Deployment Unearthed
  17. Mike says:
    December 19, 2015 at 1:07 am

    This is great! For X6205 who had the invalid layout file error, I had the same issue. I worked around it by copying the XML to the target machine then running. See below:

    Copy-Item -Path $PSScriptRoot’\StartMenu.xml’ -Destination $env:SystemDrive’\Windows\Temp’
    Copy-Item -Path $PSScriptRoot’\Internet Explorer.lnk’ -Destination $env:SystemDrive’\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories’
    Import-StartLayout -LayoutPath $env:SystemDrive’\Windows\Temp\StartMenu.xml’ -MountPath $env:SystemDrive\

    Reply
  18. patrick says:
    January 6, 2016 at 11:27 pm

    The export and import seems work fine. I see the newly created/update Layoutmodification.xml in the C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\Layoutmodification.xml
    When I log in as a new domain user, I don’t see the modified start menu.

    I’m using Windows 10 Pro. Is that a problem?

    Reply
    1. Jörgen Nilsson says:
      January 7, 2016 at 10:11 am

      Hi,
      As the GPO for customizing the start menu requires Enterprise, so would most likely be the case for this method as well.
      /Jörgen

      Reply
  19. Darryl says:
    January 21, 2016 at 12:01 am

    Great article.

    We are however seeing an issue if the user has a roaming profile, even though the Start Menu tiles don’t themselves roam.

    If the user has no roaming profile, the Start Menu tiles appear as expected on every computer that they log into.

    If the user has a roaming profile, the Start Menu only appears correctly on the first computer that they log into – the one used to create the profile. On every other computer, the tile layout still loads (from Layoutmodification.xml), however the only icons that appear are the AppUserModelID ones. The other icons are missing.

    In addition, File Explorer and Settings disappear from the Start Menu.

    We’re on build 1511 (Pro) with current updates.

    Has anyone else seen this happen, or does it work for you?

    Reply
    1. Jörgen Nilsson says:
      January 25, 2016 at 10:10 pm

      Hi,
      As the client already have a profile it will most likely not execute the imported one in that scenario..
      /Jörgen

      Reply
  20. Gareth Edmondson says:
    January 27, 2016 at 9:59 am

    I’ve considered putting the start menu in during deployment, but what about where you need 2 or 3 different start menus that depend on the security level of the user?

    We need to be able to bring these in on the fly when they log in.

    Any ideas?

    Gareth

    Reply
    1. Jörgen Nilsson says:
      February 1, 2016 at 10:05 pm

      Hi,
      On the fly is tuff, could work if you modify the powershell script that is scheduled.. then you could check for AD-group or something. should work just fine.
      /Jörgen

      Reply
  21. iondream says:
    January 27, 2016 at 10:19 pm

    Looks like the location of the internet explorer lnk has changed in 1511. its not created in the programdata folder any longer, and can only be found when the user creates their profile. so maybe an update is in order?

    Reply
    1. Jörgen Nilsson says:
      January 27, 2016 at 10:31 pm

      Hi,
      That is the same as in 1507, that is why I wrote that you need to create that link by yourself. “add a .lnk file that points to Internet Explorer….”
      /Jörgen

      Reply
  22. Everett says:
    January 29, 2016 at 2:49 pm

    Very helpful article. Successfully created the startmenu with all the tiles I wanted except IE. When I add the IE .lnk to the C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories, the link is there, but does not respond and the icon does not show for any user except the local admin. I am attempting this on the LTSB version of Enterprise. Can I get your thoughts?

    Reply
    1. Jörgen Nilsson says:
      February 1, 2016 at 10:04 pm

      Hi,
      I haven’t tested it on LTSB at all actually, will try to find the time. It works just fine with a standrad user, no roaming profiles or anything like that in use?
      /Jörgen

      Reply
  23. Shannon says:
    January 30, 2016 at 6:53 am

    Hi,

    I have been working on a Windows 10 image that has already been sysprepped with default user profile created and deployed it via SCCM. What I have noticed is that the start menu tiles after deployment are not arranged correctly. There are empty tiles at places, however all app tiles are present but the alignment is not right. When I deploy this image on a test machine manually using dism, the start menu stays intact. I have followed the suggestions of importing the start menu layout as well as tried copying the layout to the Default shell folder and can also see the new LayoutModification.xml moved across. I fail to understand is what SCCM is doing differently while applying the image.
    It will be great if you could provide pointers on how to troubleshoot this issue. Also the machine is not domain joined with no GPOs applied.

    Kind regards,
    Shannon

    Reply
  24. Shannon says:
    February 2, 2016 at 2:38 pm

    Hi,

    It is a very basic task sequence with no answer file, image already sysprepped, driver package applied and machine joined to workgroup. This was configured such that no domain related policies would be set on the laptop. Any logs I could view which would point out the start layout issue?
    Thank you for your help.

    Kind regards,
    Shannon R

    Reply
  25. Pingback: Anpassa Windows 10 startMeny och Taskbar – Blogg om IT, Smarta hem och teknik.
  26. Pat says:
    February 17, 2016 at 11:04 pm

    Excellent article, as always! However, I have one question…. when deploying the customized start menu using the method you describe above, can it be reconfigured later by the user? In my case, I would like to deploy a standard start menu to everyone, but allow them to modify it later, if they choose to.

    Reply
    1. Jörgen Nilsson says:
      February 19, 2016 at 3:17 pm

      Hi,
      yes, if you deploy it using the Powershell command the user can modify it afterwards, if you want to lock it down you should use the GPO, then the end user cannot modify it in anyway.
      /Jörgen

      Reply
  27. Marshall says:
    February 18, 2016 at 10:17 pm

    Well done! Thank you very much for sharing!

    Reply
  28. Bill Crandall says:
    February 25, 2016 at 5:43 pm

    Jorgen/Mike,

    I’ve followed your instructions to the letter, yet I’m still receiving the “invalid layout file” error. I tried Mike’s workaround of copying the .xml layout to the local drive before importing it, yet I still get the error. I haven’t tried exporting the layout again, but what could I be doing wrong?

    /Bill

    Reply
  29. Adam says:
    February 26, 2016 at 1:53 pm

    This might be a dumb question, but what application is that for your deploy steps?

    Reply
  30. ThomasC. says:
    February 29, 2016 at 12:38 pm

    HI Jorgen,
    I have followed thoroughly your article. After i login on a Windows 10 (Version 1511 Build 10586.71) machine, the LayoutModified.xml is present and set to:

    The ” Internet Explorer.lnk” icon is copied

    Still o cannot see the Start icon, only an empty space

    Note: i used copyprofile in unattend

    Reply
    1. Jörgen Nilsson says:
      March 2, 2016 at 6:08 am

      Hi,
      It is a known issue or feature that the import start menu feature isn’t executed when you use copyprofile as the user copies the admin profile and therefore have an existing profile already.
      /Jörgen

      Reply
  31. Jose says:
    March 3, 2016 at 12:43 am

    Please fix references to layout file. It is not LayoutModifications.xml but LayoutModification.xml with no “s”

    Reply
    1. Jörgen Nilsson says:
      March 7, 2016 at 11:08 pm

      Done! Thanks for the feedback!
      /Jörgen

      Reply
  32. Matthew says:
    March 10, 2016 at 6:11 am

    I’ve also been using the method letter for letter on Build 1511 (10586.71), and the place for the Internet Explorer tile is blank. Damn it – why do Microsoft make it so difficult. Any ideas guys? Corporate users need IE still instead of Edge.

    Reply
  33. Tom R says:
    March 15, 2016 at 10:04 pm

    Unfortunately it don`t work for me either. I have exactly the same problem as Matthew. Maybe MS have changed something in build 1511?

    Reply
  34. Paul says:
    March 16, 2016 at 9:50 am

    It’s possible to do the same thing for existing user profile ?

    Reply
    1. Jörgen Nilsson says:
      March 21, 2016 at 2:26 pm

      Hi,
      No as the Start Menu is already created at that time so it will ignore the file you import.
      /Jörgen

      Reply
  35. Joni says:
    March 18, 2016 at 3:44 pm

    We have a website that we would like to add to the custom start menu, which needs to open in Internet Explorer. Could you provide the correct syntax to enter, if it is possible to do that at all? Thank you.

    Reply
  36. putti says:
    March 21, 2016 at 1:17 pm

    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 ?

    Thanks

    Reply
    1. Jörgen Nilsson says:
      March 21, 2016 at 2:09 pm

      Hi,
      If I understand you correctly your .xml file does work when you use it with a Group policy, the users cannot change the settings in that case and that is by design and how it works.
      But it doesn’t work when you import it using powershell?
      Is the user profile a new one or have you used CopyProfile for instance when deploying the computer?
      /Jörgen

      Reply
  37. putti says:
    March 21, 2016 at 3:22 pm

    Hi, gpo it’s for test layout modification , it’s work.
    I’m usingd mdt 2013 updt 2.
    Import with powershell or copy during sequence to apply custom layout with no error.
    layoutmodification.xml present in folder C:\Users\Default\AppData\Local\Microsoft\Windows\Shell.
    But not apply o new user.
    if i customise before sysprep an capture with copy profile it ok.
    but il need to manage some start menu

    Thanks

    Reply
  38. Everett says:
    March 24, 2016 at 3:29 pm

    Windows Enterprise LTSB does not need the IE tweak to stay pinned on the Start Menu. Thanks for the info provided, was very helpful. Will recommend the article to anyone looking for the same fixes.

    Reply
  39. OMS says:
    March 25, 2016 at 3:27 pm

    I am deploying Enterprise LTSB and can not get the IE to stay pinned. How are you doing it Everett?

    Reply
  40. Gary says:
    April 8, 2016 at 9:20 pm

    Thanks so much, I had been doing another trick to get an IE Icon to show up, but this is better.
    – Confirmed working in Windows 10 1511
    – ConfigMgr 2012 R2 SP1

    Reply
  41. Everett says:
    April 11, 2016 at 10:43 pm

    My apologies, I did use the copy IE shortcut task, but not the same way as this process. After setting up the Start menu to your liking and exporting the XML file, navigate to Start — All Apps — Windows Accessories, right-click on the IE icon and choose “Open file location”. When the folder location appears, simply copy that IE shortcut and paste it to “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Windows Accessories” Then import your xml file and sysprep or just have a user login. This works for me on local and domain accounts.

    Reply
  42. Jeff May-Stahl says:
    April 19, 2016 at 8:45 pm

    I am trying to deploy this using SCCM AFTER OS deployment but it is not working. I created a package with a program that runs (as administrator)
    powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File .\ApplyCustomMenu.ps1

    It deployes successfully but nothing changes. I am thinking its a permission issue?

    Reply
  43. Chris says:
    April 20, 2016 at 4:49 pm

    One note… to save some other folks a little frustration… I read this post and didn’t love the idea of putting another shortcut on the “All Users” start menu in the Accessories folder… so I thought I could accomplish the same thing by putting a shortcut to IE in the Program Files (x86)\Internet Explorer folder and just using %PROGRAMFILES(X86)% reference rather than %ALLUSERSPROFILE% — I was wrong… for some reason, the system doesn’t have proper permissions to that folder in order to read or create the shortcut…but when I copied the identical LNK file to the %ALLUSERSPROFILE% folder mentioned above, it worked perfectly… Dang! That’s strange, don’t you think?

    Chris

    Reply
  44. Brian says:
    April 29, 2016 at 5:52 pm

    Is there a reason this wouldn’t work being deployed as a package? For example, we have ConfigMgr tied to an MDT database which allows role based deployment. All of our roles have different Start Menus. Would creating this as a package fail for some reason?

    Reply
  45. Michael says:
    May 1, 2016 at 11:07 am

    I have read through the comments and followed this multiple times and I’m not having any luck. Running windows 10 Pro v1511 OS Build 10586.0. I’m not as concerned with the IE icon as I am with the start menu. I have run the command locally and it acts like it is running but no change and no error. Has anyone with this version got this to work?

    XML file is in the folder like it should be.
    I have tested on a brand new logged in user with no change.
    I’m deploying with SCCM 2012 R2 with MDT 2013 UP1 integrated.
    I have tried to run the command both in a task sequecne and manually with the same results.

    Reply
    1. Jörgen Nilsson says:
      May 1, 2016 at 10:49 pm

      Hi,
      Could it be that you are using CopyProfile=True in any of your Unattend.xml files?
      If so it doesn’t work.
      /Jörgen

      Reply
  46. An says:
    May 3, 2016 at 3:59 pm

    Thanks for the great blog. I followed your blog and everything works fine, exept for the website shortcuts (.website file) I’ve added to the start menu. The icons get lost and a internet explorer icon is showed instead of the websites icon. Do you know a workaround to fix this issue?

    Reply
  47. Pelle says:
    May 13, 2016 at 2:00 pm

    I kept getting an error message like “Cannot find path” when executing Import-ImportStartLayout. It pointed to a nonexistent directory that had the same name as my scriptroot but added the text “Users” in the root name (ie. script folder being called c:\CustomStartScript and nonexistent folder being C:\CustomStartScriptUsers.

    My solution was to programatically create the folder and add my custom LayoutModification.xml in it. Pasting my modifications below (praying it will turn out allright as comment):

    Import-Module StartLayout
    $LayoutPathRoot = “$(Get-Location)Users” # Define root of layout path to work around error message in Import-StartLayout
    $LayoutPath = “$($LayoutPathRoot)\Default\AppData\Local\Microsoft\Windows\Shell” # Add folder structure to work around error message
    if(!(Test-Path $LayoutPath)){New-Item $LayoutPath -ItemType Directory -Force} # Create folders.
    Copy-Item “$($PSScriptRoot)\Internet Explorer.lnk” “$($env:ProgramData)\Microsoft\Windows\Start Menu\Programs\Accessories” -Force # Copy IE shortcut
    Copy-Item “$($PSScriptRoot)\CustomLayout.xml” “$($LayoutPath)\LayoutModification.xml” # Copy xml to newly created folder
    Copy-Item “$($PSScriptRoot)\CustomLayout.xml” “$($env:SystemDrive)\Users\Default\Appdata\Local\Microsoft\Windows\Shell\LayoutModification.xml” -Force # copy xml to default user profile
    Import-StartLayout -LayoutPath “$($PSScriptRoot)\CustomLayout.xml” -MountPath “$($env:SystemDrive)” # Importing new start menu layout
    Remove-Item $LayoutPathRoot -Recurse -Confirm:$false # Remove newly created folder.

    Reply
  48. Pelle says:
    May 13, 2016 at 2:29 pm

    Here’s a version without comments:

    Import-Module StartLayout
    $LayoutPathRoot = “$(Get-Location)Users”
    $LayoutPath = “$($LayoutPathRoot)\Default\AppData\Local\Microsoft\Windows\Shell”
    if(!(Test-Path $LayoutPath)){New-Item $LayoutPath -ItemType Directory -Force}
    Copy-Item “$($PSScriptRoot)\Internet Explorer.lnk” “$($env:ProgramData)\Microsoft\Windows\Start Menu\Programs\Accessories” -Force
    Copy-Item “$($PSScriptRoot)\CustomLayout.xml” “$($LayoutPath)\LayoutModification.xml”
    Copy-Item “$($PSScriptRoot)\CustomLayout.xml” “$($env:SystemDrive)\Users\Default\Appdata\Local\Microsoft\Windows\Shell\LayoutModification.xml” -Force
    Import-StartLayout -LayoutPath “$($PSScriptRoot)\CustomLayout.xml” -MountPath “$($env:SystemDrive)”
    Remove-Item $LayoutPathRoot -Recurse -Confirm:$false

    As a last note — I’m a little bit uncertain of any unwanted consequences with copying the xml to the default user path (Line 7) but it seems necessary (at least in Build 10586.318).

    Reply
  49. Ian says:
    May 17, 2016 at 8:43 pm

    Hi there!

    Can you tell me a little about how the Application IDs work? We’re installing some applications later in the MDT process but they aren’t coming up in the start menu after the image is finished deploying. (The menu had been captured from an existing machine with our image.)

    Thanks very much for the post!

    Reply
  50. Paul says:
    May 19, 2016 at 1:07 am

    Hi Jörgen

    How would this work with a Windows 10 InPlace Upgrade? At what stage does the script get executed? If it’s in the Post-Processing section and by chance a user has already logged on before this is executed… wouldn’t they get the default layout instead of the customized one?

    Thanks
    Paul

    Reply
  51. Paul Guyon says:
    May 23, 2016 at 6:54 pm

    Is there a way to import a default start layout to an existing user?

    Reply
    1. Jörgen Nilsson says:
      June 9, 2016 at 9:01 am

      Hi,
      I would use a group policy and use the partial lockdown version, note that it will clear the users Start Menu.
      /Jörgen

      Reply
  52. ItzikT says:
    June 6, 2016 at 4:27 pm

    So this seems to work great, except I HAVE to have something in start menu hehe.
    I want my user’s start menu to be empty and as small as possible but when I export an empty start menu it just exports an empty XML file which then fails when I try to import it.

    Any ideas?

    Reply
  53. Eden Oliveira says:
    June 13, 2016 at 8:34 pm

    Hi Jörgen, thank you again for your support to all of us looking for solutions to our environment.

    I have Windows 10 1511 enterprise. Trying hard to achieve two things:
    1) Hide / Disable / remove windows Store app icon from Task bar (GPO from the latest ADMX file seems not to work

    2) Removing / disabling Suggested Apps from Start menu: GPO Cloud experience doesnt seem to work, I am still getting facebook on my Start menu.

    Any Idea on how to get rid of those two things:

    Environment:

    Windows 10 Enterprise (build 10586.164) 1511

    Thank you in Advance.

    Eden Oliveira

    Reply
  54. Jeff says:
    June 16, 2016 at 3:34 pm

    Actually ive not been able to make it work.
    The only way ive been able to make this work is after importing the new layout, i had to delete/rename this folder: C:\Users\Default\AppData\Local\TileDataLayer

    Reply
  55. Jose says:
    June 27, 2016 at 10:45 pm

    If you want to make your start layout thinner you can do so by editing the attribute in the LayoutModification.xml file.
    http://joseespitia.com/2016/06/27/one-column-start-layout/

    I hope this helps someone!

    Reply
  56. Garvin says:
    July 15, 2016 at 4:52 pm

    This worked great on SCCM but for the life of me i can not get this to work in MDT at all

    Reply
    1. Jörgen Nilsson says:
      August 10, 2016 at 1:11 pm

      Hi,
      I have had many comments about it so I will write a log post, did you try changing the file permissions to administrator instead of system as we do in SCCM?
      /Jörgen

      Reply
  57. Russell says:
    July 22, 2016 at 8:18 pm

    Which version of iexplorer.exe did you shortcut: x86 or x64?
    Thanks!

    Reply
  58. BranM says:
    August 11, 2016 at 1:08 am

    Please show an example of an internet webite .url pinned to the start menu in a subdirectory
    All Microsoft examples indicate

    “…you must create .url file (right-click on the Desktop, select New > Shortcut, and then type a Web URL). You must add this .url file in a legacy Start Menu directory before first boot; for example, “%APPDATA%\Microsoft\Windows\Start Menu\Programs\” or the all users profile “%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\”.
    and create an entry like

    ”

    This works but then I have a website link at the root of my Start menu.
    If I try to move it to a sub folder/directory in the start menu, then it breaks.

    The example MS gives seems as though it does not accommodate Start menu subfolders/directories. If this is the case then it is a very unsightly implementation.
    Here’s hoping I’m wrong.

    Reply
  59. Hauke says:
    August 12, 2016 at 4:22 pm

    Seems like adding IE isn’t working with 1607 anymore.
    I have this in Startmenu.xml… but IE isn’t showing up for other users.

    Reply
  60. Ted Walker says:
    August 12, 2016 at 5:27 pm

    I would love to see an update to this. It is still working for me, even after the 1607 anniversary update, but I really don’t like being force fed the entire app list in the start menu, and would love to find some method to completely hide or minimize the app list all together.

    Reply
  61. Rakesh says:
    September 14, 2016 at 12:21 pm

    Hi Jörgen Nilsson,

    Thanks for all your lessons on customizing Windows 10. I have used them all and would definitely like to mention that everything work. I modified your script to include ‘This PC’ and ‘User Files’ icons on desktop.

    Reply
  62. Michael says:
    September 14, 2016 at 11:53 pm

    Do you mind adding the steps in making the package in SCCM for this?

    Reply
  63. pmorin says:
    September 21, 2016 at 12:18 am

    Like a few others, I had issues where the IE shortcut would not appear on the Start Menu. I am not sure if it is because I am running the Enterprise Educational build (1607 Build 14393.0), or if there is something in our Win7 Group Policies that is causing the issue.

    I tried the IE shortcut in the suggested %allusersprofile% various locations, Program Files (x86)\Internet Explorer Folder, and then moved to using the default user profile (referencing %appdata% in the xml layout file) so there would be no rights issues.

    What finally worked for me was using a Pinned Site Shortcut (.website) link instead.

    Launch IE. Set intranet webpage. Alt+T (Tools menu) -> Add site to Apps.
    This created a shortcut to the webpage in %appdata%\Microsoft\Windows\Start Menu.
    I renamed the shortcut to “Internet Explorer.website”
    I then copied this file, and updated my xml file. I tested the .website shortcut in both the default user profile as well as the %allusersprofile% noted above.

    The powershell script I am using via SCCM 2012R2 Task Sequence is:
    Copy-Item -Path ‘Internet Explorer.website’ -Destination $env:SystemDrive’\ProgramData\Microsoft\Windows\Start Menu\Programs’
    Import-StartLayout –LayoutPath LayoutModification.xml -MountPath $env:SystemDrive\

    The edited line in the LayoutModification.xml file for me is:

    There are two issues with this workaround: It specifies a default webpage to open on (which is not a big deal in my case, as we would set a default page via GPO anyway), and the icon winds up being the favico.ico from the website, not the IE icon.

    To get around this – drag the .website file into notepad. I changed the IconFile line to IconFile=C:\ – with it missing a valid icon file caused it to shift to the default system icon. Double click it to launch it and update the icon.

    I did try a number of ico and png files, but did not have success and eventually just ran out of time.

    Not necessarily the most elegant solution, but…..

    Reply
  64. pmorin says:
    September 21, 2016 at 12:24 am

    (Apologies – missed the LayoutModification.xml line):

    Reply
  65. Sachin says:
    September 26, 2016 at 8:17 am

    This gets rid of the Edge icon

    <!—->

    Reply
  66. Clint says:
    September 29, 2016 at 8:57 pm

    Ok I seem to be stuck trying to get .URL files to appear on the start menu layout. First, I followed the steps in this article and I could get all Microsoft Office 2016 apps and IE11 shortcut to be pinned using the powershell script in a SCCM OSD task sequence. Next, I tried to have a Start Menu layout with Microsoft Office 2016 apps pinned, IE11 shortcut pinned and also URL’s to websites. After SCCM OSD I login and only see the Office 2016 and IE11 pinned. None of my .URL are there. I see the URL files are copied to successfully to c:\ProgramData\Microsoft\Windows\Start Menu\Programs. I can also see all my URL’s in Start > All Apps. I cannot figure out why the .URL does not show up in Start Menu

    My Powershell script code:

    Import-StartLayout -LayoutPath $PSScriptRoot\StartMenu.xml -MountPath $env:SystemDrive\
    Copy-Item -Path $PSScriptRoot’\Internet Explorer.lnk’ -Destination $env:SystemDrive’\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories’
    Copy-Item -Path $PSScriptRoot’\Website1.url’ -Destination $env:SystemDrive’\ProgramData\Microsoft\Windows\Start Menu\Programs’
    Copy-Item -Path $PSScriptRoot’\Website2.url’ -Destination $env:SystemDrive’\ProgramData\Microsoft\Windows\Start Menu\Programs’

    My StartMenu.xml code:

    For those having issues removing the store icon through group policy I’ve tested and it works using the current ADMX files. You can also remove the Store app and other unnecessary apps

    through powershell. For e.g.

    Get-AppxPackage Microsoft.ConnectivityStore | Remove-AppxPackage
    start-sleep -s 10
    Get-AppxPackage Microsoft.XboxApp | Remove-AppxPackage
    start-sleep -s 10

    I put a sleep in the above because some apps take a little longer to uninstall (yes even on SSD). Please ensure that you reboot the workstation after uninstall is complete. I have a
    powershell script that removes 15 apps successfully.

    Reply
  67. DanielS says:
    October 4, 2016 at 12:57 pm

    Hello All,

    Strange thing happens here.

    I install Win 10 1607 via SCCM 1606 OSD.

    IE link is not missing if I install Win 10 on MS Hyper-V VM, but is
    missing after installation on notebook.

    MS Support Agent has no idea why this happens, because there are no
    differences and all settings are applied on both machines are the same.

    KR

    Daniel

    Reply
  68. chris says:
    November 1, 2016 at 7:33 am

    Hi Jorgen,

    is there a way to import default bookmark into IE11 during OSD?

    thanks,
    CL

    Reply
  69. Lord of IT says:
    November 22, 2016 at 12:15 am

    For people having issues with loading .uri files into the start menu you have to use the following line in the .xml file

    the default output from export-startlayout command is wrong and you have to edit it like below to show DesktopApplicationID and instead of the file path you put the url of the .url file

    Reply
  70. mmarkt says:
    November 28, 2016 at 11:29 am

    In Windows 10 build 1607 it is possible to customize the start and taskbar layout in one xml file, but i cannot get it to work in my enviroment it gives an error when i want to import the startlayout xml, but i cannot find out what the problem is in the xml. Does anybody see what is wrong ?

    Reply
    1. Jörgen Nilsson says:
      November 28, 2016 at 3:34 pm

      Hi,
      cannot see an attachment?
      /J

      Reply
  71. ItzikT says:
    November 28, 2016 at 7:11 pm

    Thank you very much Jorgen, I’ve made almost everything I wanted to work using your guide. Only thing I’m missing is Start Menu sizing. It seems no matter what I do the menu pops up at it’s default size. I try to shrink or extend it and then export the layout and it doesn’t catch.

    Is there a way to determine the size of the start menu window?

    Reply
  72. Gary F. says:
    February 5, 2017 at 9:56 pm

    For the life of me I cannot get the import to work.

    PS C:\WINDOWS\system32> Import-StartLayout –LayoutPath c:\windows\temp\StartMenu.xml –MountPath $env:SystemDrive\
    Import-StartLayout : Could not find a part of the path
    ‘C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml’.
    At line:1 char:1
    + Import-StartLayout –LayoutPath c:\windows\temp\StartMenu.xml –MountPa …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Import-StartLayout], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException,Microsoft.Windows.StartLayout.Commands.ImportStartL
    ayoutCommand

    Reply
  73. Luna Jernberg says:
    February 9, 2017 at 11:29 am

    Hello, thank you got help from this article at work today 🙂

    Reply
  74. olivier dsm says:
    February 21, 2017 at 10:41 am

    Great explanation. Thanks a lot

    Reply
  75. Sean Barbieri says:
    February 24, 2017 at 12:57 pm

    Hi Jörgen,
    Many thanks for taking the time out to post this – very helpful.
    /Sean

    Reply
  76. Sean Barbieri says:
    March 1, 2017 at 11:16 am

    Hi Jörgen,

    Working fine here (1607 Enterprise). I’m only doing “local” testing with no domain/gpo at the moment and using MDT 2013 U2. I was wondering as I’ve seen the posts regarding the “partial lock” but although the layout is populated successfully for a new user, I don’t see the “lock” mechanism that I’ve read and seen in some other posts regarding this – so a user can remove an icon in the group. Does that feature only work with a group policy implementation or should it still be working as a standalone machine without gpo settings? Not really an issue at all but was interested if you had it working with a standalone machine.

    I have the following in the file:

    Plus the replace in the taskbar section:

    Kind regards
    /Sean

    Reply
  77. DB says:
    March 6, 2017 at 3:30 pm

    Hi All,

    Running Window 10 Enterprise 1607 and using a GPO to customize the Start and Task menu

    But when a user restarts or logs on then the changes that they made to their layout are lost.

    I then modified the Layout.XML to include the tag to allow for modifications to stick but this does not allow the users to fully customize their layout. The start menu has ‘locks’ next to the applications. Changes to the task bar stick.

    Is there a way the GPO can be used to set the customization in the first instance but then any changes the user makes are retained, both in the start menu and the task bar?

    thanks,

    DB

    Reply
  78. Robbie says:
    March 16, 2017 at 4:21 pm

    I did the whole procedure but it after importing with Import-StartLayout –LayoutPath C:\Windows\Temp\Startmenu.xml -MountPath $env:SystemDrive\ starting a new user did fetched the new startmenu I am on win10 1607 1393.447
    please advice Jorgen?

    Reply
  79. Robbie says:
    March 17, 2017 at 9:37 am

    I did the whole procedure but it after importing with Import-StartLayout –LayoutPath C:\Windows\Temp\Startmenu.xml -MountPath $env:SystemDrive\ starting a new user did NOT fetched the new startmenu
    I am on win10 1607 1393.447
    what I am doing wrong
    kind regards Rob

    Reply
  80. Elle says:
    April 7, 2017 at 3:22 pm

    Robbie I had issues with that myself where I was trying to call it from the image itself. I found out that the temp folder for me had to do with permission issues so it would keep failing. I ended up moving the StartMenu.xml to my deployment share and importing it with a powershell script having both in the same directory during my State Restore: “Import-StartLayout -LayoutPath $PSScriptRoot\StartMenu.xml -MountPath $env:SystemDrive\”

    Reply
  81. Brent says:
    April 10, 2017 at 11:15 pm

    Have you had any success creating a custom folder on the machine, setting the shortcut to appear in the Programs list (Example: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\IT Tools) then pinning that through the XML file?

    I’ve created the IT Tools folder then created a shortcut to the IT Tools folder in the Programs folder noted above and it shows up in the Program list when you click to the start menu but it won’t pin tot he Start Menu tile section… not sure if there’s any trick to that or if it’s just not possible to do.

    Reply
  82. Calle says:
    May 12, 2017 at 3:31 pm

    Great article!
    Is there a way to add internet shortcuts?
    I have tried using a ps script where I copy the shortcut in the TS:
    Copy-Item -Path $PSScriptRoot’\Supportportal.url’ -Destination $env:SystemDrive’\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories’

    And then in the exported startlayout I have added:

    But the shortcut isn’t pinned after the computer has been installed using mdt. But the rest of the startlayout looks good.

    Thanks in advance,
    Carl

    Reply
  83. Todd says:
    May 16, 2017 at 11:28 pm

    I’m trying this with the Creators Update (1703). I’ve pinned Internet Explorer and several url shortcuts to the start menu, but I can’t get these specific pinned tiles to show up when new users sign in.

    In the XML file exported through PowerShell, it does not list DesktopApplicationID for the Internet Explorer tile as mentioned in the original instructions. It is instead showing DesktopApplicationLinkPath=”%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk”

    This Internet Explorer shortcut exists in each user’s %appdata% folder, but I’ve even followed the example to create a link in “%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk” and edited the XML file accordingly, but new users are still missing the Internet Explorer tile and all the URL shortcuts pinned to the Start Menu.

    Reply
    1. Jörgen Nilsson says:
      May 24, 2017 at 2:05 pm

      Hi,
      The icon that already exists there for the users are created by an activesetup so that is to late that is why it must be copied there. The .xml file must also look like in the post otherwise it will not work..
      Regards,
      Jörgen

      Reply
  84. MRaybone says:
    May 18, 2017 at 12:54 pm

    Hello, I’m getting access denied on c:\users\default\appdata\local\microsoft\windows\shell\layoutmodifications.xml no matter how I try to run this. Any suggestions?

    Reply
    1. Jörgen Nilsson says:
      May 24, 2017 at 2:04 pm

      Hi,
      Are you running it elevated?
      Regards,
      Jörgen

      Reply
  85. js2010 says:
    July 14, 2017 at 11:36 pm

    You can put the taskbar layout in the xml file, although you have to do it by hand. Powershell doesn’t export it. But powershell can import it.

    https://4sysops.com/archives/pin-apps-to-the-taskbar-in-windows-10-1607-with-group-policy/

    Reply
  86. Sunny Nijjar says:
    November 6, 2017 at 7:41 pm

    Hey Jörgen how they lay out works great for me but how to I get it so it exports the settings for folders such as File explorer, documents, network, etc for the menu on the left side of the start menu in 1709? I not having any luck getting that part of the setting to apply. Any help would be appreciated.

    Reply
  87. ctrlaltdel says:
    November 8, 2017 at 11:28 am

    Is there any way of making this work for existing users as well as keeping their existing customizations? Can’t use GPO so that users can still customize.
    I’ve created a Task Sequence to upgrade Office from 2013 to 2016, but this is the only thing not working. The 2013 icons come off, but the 2016 icons do not appear as defined in the applied xml file, except for a new user logging on.

    Reply
  88. Dan says:
    December 20, 2017 at 2:53 am

    Hi Jörgen

    Have you or any other followers been able to get this working with Windows 10 1709 + MDT (8443) ?

    Reply
  89. Roman Beier says:
    January 19, 2018 at 2:14 pm

    Hi,
    we having problems with the IE link. Does anyone uses the OnlySpecifiedGroups in too and got it work? We deploy the xml with “OnlySpecifiedGroups” and the IE icon is not in the start menu. As soon we remove OnlySpecifiedGroups once – the IE icon is there and remains when we enable OnlySpecifiedGroups again. Any idea? Thanks in advance.

    Reply
  90. EricGS says:
    February 1, 2018 at 3:16 pm

    Jorgen, did you ever find out what to do about the IE link being deleted from Windows Accessories by a version upgrade?

    Reply
    1. EricGS says:
      February 1, 2018 at 3:31 pm

      Just found https://ccmexec.com/2016/05/making-the-ie-shortcut-survive-an-in-place-upgrade-in-windows-10/ but that uses a Task Sequence not Windows 10 Servicing Plans

      Reply
  91. jbudd0649 says:
    February 12, 2018 at 8:35 pm

    Is there a way to adapt this for a taskbar pin?

    PS. I couldn’t add a comment with my work email address it gave an error saying I needed to use a valid address. I had to use my gmail account instead. Thanks

    Reply
  92. Steve Hartman says:
    September 19, 2018 at 8:48 pm

    Hello Jorgen,
    Thank you for writing this article it worked great! I have a question if I may ask? How do I copy all of my desktop shortcuts over so everyone who logs on will have the same webpages and shortcuts?
    thank you in advance. Steve H.

    Reply
  93. WILLIAM P BROWN says:
    September 28, 2018 at 7:56 pm

    Hello Jorgen,
    I need to have alternate tiles show for different regions.
    I used the Tag and Append different sets of tiles per regions.
    When I try to import the layout I receive “…not a valid layout file”. Is my header declarations incorrect?

    Reply
    1. Jörgen Nilsson says:
      September 29, 2018 at 10:03 am

      Hi,
      it is very picky about the format so most likely you have some formatting error in there, no easy way but to compare and use a good .xml editor.
      Regards,
      Jörgen

      Reply
  94. Alex says:
    April 25, 2019 at 1:15 am

    Hi Jorgen,
    It looks liek MS gave us the similar issue with Teams. Itis installed in user context after start layout deployed. So it does not exist at the time of Start MAnu configuration and Teams icon is not present as the result.
    I tried to copy a shortcut to c:\Program Files(x86)\Teams Installer folder and customized the shortcut to use variables instead of hardcoded path pointing to User’s APPDATA.

    I packaged all this to an MSI and it successfully copy the shortcut. When I bring this shortcut to start I can start Teams just fine.

    But when I do the same with Autopilot the Teams icon is still missing 🙁

    I am wondering if you had a chance to get a Customize start layout XML working with Teams icon?

    Reply
  95. Giovanni says:
    February 27, 2020 at 3:20 pm

    Hello Jörgen
    Great Article and great Video that i bought in ViaMostra. Do you know if in the realease 1803 something has changed? I’ve try to configure and import a standard start layout and it worked but not totally.
    Basically everything is ok apart the Windows APP that i left in the menu( ie: Sticky Notes, Calculator) where instead of the application icon i have a black hole.
    I fix the issue reinstalling the apps for all users with the powershell command:

    Get-AppxPackage -allusers | foreach {Add-AppxPackage -register “$($_.InstallLocation)\appxmanifest.xml” -DisableDevelopmentMode}

    But i don’t understand where i’m wrong

    This is a Domain Based workstation where a policy block the Windows Store. This can be the problem?

    Basically i have lost all the tile related to the Windows App,

    Reply
    1. Jörgen Nilsson says:
      March 2, 2020 at 4:50 pm

      Hi,
      That part has not changed, could it be that the removeapps prowershell skript uninstalled the app?

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

My name is Jörgen Nilsson and I work as a Senior Consultant at Onevinn in Malmö, Sweden. This is my blog where I will share tips and stuff for my own and everyone elses use on Enterprise Mobility and Windows related topics.
All code is provided "AS-IS" with no warranties.

Recent Posts

  • Tip when troubleshooting unexpected reboots during Autopilot – event ID 2800
  • New settings in Intune Security Baseline Windows 11 24H2 -2504
  • Managing extensions in Visual Studio Code
  • Reinstall a required Win32app using remediation on demand
  • Administrator protection in Windows 11 – First look
©2025 CCMEXEC.COM – Enterprise Mobility | WordPress Theme by Superb Themes
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.Accept Reject Read More
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SAVE & ACCEPT