44

A common problem I have is that I have a new PC that I'll be using for a while. And pretty much every Windows 10 PC I've used (even work PCs) have a ton of junk I don't want in the start menu in the form of a tile. I don't care much about the stuff in the "all apps" menu because it's out of the way, but I want the tiles to be just for stuff I use a lot.

Unfortunately, as far as I can tell, the only way to remove tiles is one by one by right clicking > unpin from start. How can I quickly remove all these tiles?

Also, is there some easy way to copy over the start menu links and layout from another computer? This would be useful as I have a number of programs that I always want in the start menu no matter what PC I'm using.

3
  • 2
    You mentioned you are using Windows 10. Group Policy provides this capability. If you want no tiles, make sure your template has no tiles and deploy. If you want certain tiles here/there, arrange them once, capture, and then deploy. You can use this link to learn more about this method: technet.microsoft.com/en-us/itpro/windows/manage/… - If you don't have gpedit.msc, you can use a 3rd party workaround to get it installed, but that would only be if you are using the Home edition. Otherwise, this should work as is. Apr 26, 2016 at 19:56
  • 1
    I had the same question last month when I had 7 computers to configure the same. Wish @lnterLinked had seen it. That would have been a great tool.
    – CharlieRB
    Apr 26, 2016 at 20:26
  • 1
    @InterLinked - you ought to flesh that out and post that as an answer.
    – Journeyman Geek
    Jan 18, 2017 at 12:50

8 Answers 8

27

WARNING: The script runs without confirmation and feedback. It worked for me (see PS2), but I don't know if it would work for everybody.

From this and this, I made the following script, which did the thing for me:

(New-Object -Com Shell.Application).
    NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').
    Items() |
  %{ $_.Verbs() } |
  ?{$_.Name -match 'Un.*pin from Start'} |
  %{$_.DoIt()}

It unpins all programs from start menu.


For non-english Windows, you should probably replace 'Un.*pin from Start' by another sentence.

Run

(New-Object -Com Shell.Application).
    NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').
    Items() |
  %{ $_.Verbs() }

To check what's yours. In French : '&Désépingler de la page d''accueil'

PS: previous command may print long list which is hard to look through manually. You could see actions for some known application in the start screen by the command (substitute the name to match, for me it was KeePass):

(New-Object -Com Shell.Application).
     NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').
     Items() | ?{$_.Name() -match 'Keep.*'} |
     %{ $_.Verbs() }

PS2: @MarcoLackovic reported that it does not remove all. Recently I had a chance to try it and it indeed did not remove all. What was left were references to Windows Store. Looks like the script only scans through installed applications, so it does not remove other icons. I would suspect it also skips pinned documents, for example.

11
  • 1
    This worked for me, though left odd apps still there (like Translator & Duolingo). I was slightly paranoid so first did Start > Run > "shell:::{4234d49b-0245-4df3-b780-3893943456e1}" to verify this was the All Programs special folder. I then ran (New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ? { $null -ne ($_.Verbs() | ? { $_.Name -match 'Un.*pin from Start' }) } | select Name to see what was about to be unpinned. Awesome find!
    – mlhDev
    Apr 27, 2018 at 14:33
  • Thanks, it works, better than cleaning them all by hand May 2, 2018 at 13:01
  • 1
    Using Windows 10 Pro 1809 build 17763 in English. I have copy pasted the first script in a script.ps1 file and then executed powershell -ExecutionPolicy ByPass -File script.ps1: the script ran with no errors but it had no effect, the tiles were not removed. The second script provided a thousand lines of items like &Pin to Start or Create &shortcut but none of them contained anything remotely similar to Unpin from Start. Feb 17, 2019 at 9:15
  • @MarcoLackovic check the latest edit, maybe it helps
    – max630
    Feb 17, 2019 at 10:33
  • @max630 I have just installed a fresh copy of Windows 10 Pro 1809 build 17763 in English. Your third script produces the following output: Open, Open file location, Open new window, Run as administrator, Uninstall, &Pin to Start, Create &shortcut Feb 17, 2019 at 14:22
18

I've come up with a lengthy but comprehensive script for this that removes all tiles, even those for apps that haven't been installed (Candy Crush, Netflix, etc.). Copy the contents below and run from a PowerShell ISE window executed as Administrator.

It will remove all titles for the current logged user, plus it optionally do the same for all new users in the computer - see below.

#Requires -RunAsAdministrator

$START_MENU_LAYOUT = @"
<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
    <LayoutOptions StartTileGroupCellWidth="6" />
    <DefaultLayoutOverride>
        <StartLayoutCollection>
            <defaultlayout:StartLayout GroupCellWidth="6" />
        </StartLayoutCollection>
    </DefaultLayoutOverride>
</LayoutModificationTemplate>
"@

$layoutFile="C:\Windows\StartMenuLayout.xml"

#Delete layout file if it already exists
If(Test-Path $layoutFile)
{
    Remove-Item $layoutFile
}

#Creates the blank layout file
$START_MENU_LAYOUT | Out-File $layoutFile -Encoding ASCII

$regAliases = @("HKLM", "HKCU")

#Assign the start layout and force it to apply with "LockedStartLayout" at both the machine and user level
foreach ($regAlias in $regAliases){
    $basePath = $regAlias + ":\SOFTWARE\Policies\Microsoft\Windows"
    $keyPath = $basePath + "\Explorer" 
    IF(!(Test-Path -Path $keyPath)) { 
        New-Item -Path $basePath -Name "Explorer"
    }
    Set-ItemProperty -Path $keyPath -Name "LockedStartLayout" -Value 1
    Set-ItemProperty -Path $keyPath -Name "StartLayoutFile" -Value $layoutFile
}

#Restart Explorer, open the start menu (necessary to load the new layout), and give it a few seconds to process
Stop-Process -name explorer
Start-Sleep -s 5
$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^{ESCAPE}')
Start-Sleep -s 5

#Enable the ability to pin items again by disabling "LockedStartLayout"
foreach ($regAlias in $regAliases){
    $basePath = $regAlias + ":\SOFTWARE\Policies\Microsoft\Windows"
    $keyPath = $basePath + "\Explorer" 
    Set-ItemProperty -Path $keyPath -Name "LockedStartLayout" -Value 0
}

#Restart Explorer and delete the layout file
Stop-Process -name explorer

# Uncomment the next line to make clean start menu default for all new users
#Import-StartLayout -LayoutPath $layoutFile -MountPath $env:SystemDrive\

Remove-Item $layoutFile

In addition, this script can be used in a few other ways:

  1. To apply to new users:

    a. Uncomment the said line in the script

  2. To apply a customized layout

    a. Customize your start layout exactly how you want it

    b. Export it using this MS guide: https://docs.microsoft.com/en-us/windows/configuration/customize-and-export-start-layout

    c. Replace $START_MENU_LAYOUT with your exported XML (making sure to escape characters properly)

That should take care of all cases mentioned in the original question.

3
  • 4
    I've been using this script for 6+ months and it never let's me down. So far, it's the only one that worked out of multiple scripts I tried. I've added it to my collection of scripts to cleanup W10: github.com/cbaldan/Debloat-Windows-10/tree/master
    – cbaldan
    Jan 30, 2020 at 4:28
  • Works like nothing else Mar 14, 2023 at 0:52
  • Works great! One tweak: I found that Ctrl+Esc, which toggles the Start Menu on/off, doesn't work reliably to close it (dunno why). I found that sending simply Escape works: $wshell.SendKeys("{ESC}") (remove the ^ character, which is Ctrl). Mar 17, 2023 at 20:36
3

An alternative to the method InterLinked suggested is to use PowerShell to remove the apps (this completely removes the app's, not just hides them).

Get-AppXPackage | where-object {$_.name –notlike “*store*”} | Remove-AppxPackage

For more see this tutorial. http://www.tenforums.com/tutorials/4689-apps-uninstall-windows-10-a.html

1
  • 1
    The question is just about hiding them. And what if you remove "App Connector" render Windows Store useless?
    – user477799
    Jan 18, 2017 at 7:08
2

You can get your Windows 7 start menu back by using "Open Shell". This program will replace the Microsoft "Metro" start menu. It is highly configurable, allowing you to get an XP, or Win7 look. This is the first app I install on Win10 if I'm not using a touchscreen.

It looks like this:

Win7 Classic Shell Example

You can also replace that little shell with any icon you want, if you want to change your start menu button.

Open Shell: https://github.com/Open-Shell/Open-Shell-Menu

NOTE: Classic Shell is now called Open Shell and is fully open sourced.

1
  • 2
    As of Dec 3rd, 2017 , this "Classic Shell" is no longer actively developed but I have install it today and it will work. The code for the latest version is released on SourceForge. More details here. Jan 12, 2018 at 8:17
1

You mentioned you are using Windows 10. Group Policy Editor provides this capability. You can use a group policy template to manage settings at scale.

If you want no tiles, make sure your template has no tiles and deploy. If you want certain tiles here/there, arrange them once, capture, and then deploy.

You can use this link to learn more about this method

If you don't have gpedit.msc, you can use a 3rd party workaround to get it installed, but that would only be if you are using the Home edition. Otherwise, this should work as is.

4
  • Isn't this limited to the Enterprise edition? Feb 6, 2017 at 5:08
  • 1
    Group Policy Editor is limited to Enterprise and Pro but there are workarounds for Home - superuser.com/questions/1018145/… Feb 6, 2017 at 10:18
  • Yeah, I have gpedit on Pro, but the specific policies for tile templates are Enterprise-only I've heard. Feb 6, 2017 at 12:20
  • @grawity I'm not familiar with the templates themselves. You would have to look into that Feb 6, 2017 at 14:24
0

This script works well

(New-Object -Com Shell.Application).
    NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').
    Items() |
  %{ $_.Verbs() } |
  ?{$_.Name -match 'Un.*pin from Start'} |
  %{$_.DoIt()}

On Win 10 versions 1709 and 1803 it removes all shortcuts except the shortcuts which are the links (not shortcuts) to install the applications from the Store (News, Speed Test, and e.t.c).

This script will remove them when they're installed.

1
  • 1
    How is this answer different from the one given 7 months earlier by @max630? Feb 17, 2019 at 8:10
-3

I use the free version Startmenux to get a windows XP like start menu with no tiles and a full list of programs accross the screen rather than hidden in that scrolling menu (yuck).

I believe that there are other similar programs. Here is an article that introduces others, for fairness.

1
  • 2
    link-only answers are not really helpful.
    – Ramhound
    Jan 18, 2017 at 15:12
-3

To purge your newly bought computer from all the malware pre-installed on it, you need to start fresh with a clean installation of Windows 10.

  1. Download tool now
  2. Accept
  3. Nothing
  4. Start

If you also wish to uninstall all Windows Store apps from the computer, you can use this command in Administrator PowerShell : Get-AppxPackage -AllUsers | where-object {$_.name –notlike “*store*”} | Remove-AppxPackage. Because the Start Menu comes only with Windows Store apps, this will remove them all. You will, however, need to reinstall every Windows Store apps that you need.

You can also create a PowerShell script that will remove them all. The syntax of the command is Pin-App "Mail" -unpin, just replace Mail by the unwanted tile, and copy-paste the command once per tile to remove. Good luck!

2
  • External links can break or be unavailable, in which case your answer would not be useful. Please include the essential information within your answer and use the link for attribution and further reading. Thanks.
    – fixer1234
    Dec 6, 2016 at 19:52
  • 2
    Did you even read the freakin' question?
    – user477799
    Jan 18, 2017 at 7:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .