Making life easier for my users is an oddly satisfying part of my day. When I found out that my method of pinning programs to the taskbar was broken in the newer releases of Windows 10, I was predictably unhappy. See, the Microsoft UI team made the decision that certain actions should be limited to actual user choices. These actions include invoking the pin to taskbar verb in the previously mentioned script. The idea behind this is to prevent spamming of the taskbar (looking at you, Chrome). Unfortunately, their solution lacks finesse.
Thankfully – we don’t have to completely reinvent the wheel to pin programs to the taskbar in Windows 10. We can simply substitute our pinning script with a small pinning executable that is able to bypass the verb restriction. Because this solution works on Windows 8.1 as well, we don’t have to worry about maintaining separate settings for multiple operating systems.
How to Pin Programs to the Taskbar in Windows 10?
First, download this small .zip file. It contains a small executable (75KB), a sample script for pinning Office, and a readme (because everybody loves a readme). The utility was created to solve this Microsoft Connect bug. Credit to Stuart for publishing it first.
Note: Stuart has an updated PowerShell script that also works on the Start Screen. That tool is here.
Edit the pinitem.cmd file in the zip. Customize the script to your environment. By default, it will pin most of Office 2013 to the taskbar. Note the quotation marks around the file path and around the file name. Use quotation marks even if the path/name contain no spaces. Items are pinned in the order that they appear in the script. In our sample script, Outlook is pinned first and PowerPoint is pinned last. Don’t worry about editing the pinto10.exe path. We are going to place it and the script with our GPO.
PinTo10.exe /PTFOL:"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2013" /PTFILE:"Outlook 2013.lnk" PinTo10.exe /PTFOL:"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2013" /PTFILE:"OneNote 2013.lnk" PinTo10.exe /PTFOL:"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2013" /PTFILE:"Word 2013.lnk" PinTo10.exe /PTFOL:"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2013" /PTFILE:"Excel 2013.lnk" PinTo10.exe /PTFOL:"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2013" /PTFILE:"PowerPoint 2013.lnk"
Pinned programs are configured for users. Create or edit a GPO that will apply to your users and navigate to User Configuration\Policies\Windows Settings\Scripts. If you do not need the applications pinned on first logon, you can call the script as a logoff script. Everyone else should use a logon script.
Open the logon portion in the GPMC and press show files. Drop the script and exe into SYSVOL\…….\User\Scripts\logon folder. For efficiency, Martin Binder (Group Policy MVP) suggests distributing these files to the client first and pointing the script to the local instance of the file. Either way, add your script the scripts list. Below, you can see pinitem.cmd is ready to run.
To make this script have a consistent feel across multiple operating systems, you will need to configure one more Group Policy setting. This setting applies to computers and can be set in any general computer GPO.
Edit a GPO and navigate to Computer Configuration\Policies\Administrative Templates\System\Group Policy. Enable the setting Configure Logon Script Delay and specify a delay of 1 minute. Be sure to add a comment so future you can remember why this was set. With a GPUpdate for the computer and a logout/login for the user – you should now be able to pin items on your Windows 10 (and older) operating systems!
is it possible to pin small icons to startmenu
I don’t think that this tool will do that. Sorry!
Can I unpin Mail app and Store app from taskbar using PinTo10.exe ?
I realise this is an old thread but just in case you still require a solution to unpin MS Store and Mail from the Taskbar.
Create an .XML file
1. Open File Explorer and navigate to %logonserver%\NETLOGON\
2. Create a new folder called GUI.
3. Create a new text document within the GUI folder and paste the following in to it:
4. Save the text document and then rename it to Unpin MS Store & Mail.xml.
5. For clarity, the full path should be as follows:
%logonserver%\NETLOGON\GUI\Unpin MS Store & Mail.xml
Create the Group Policy
1. Open the Group policy management tool.
2. On the Group Policy Management screen, expand the folder named Group Policy Objects and create a new group policy called W_GUI Tweaks then click on OK.
3. Right-click your new Group Policy Object and select the Edit option.
4. On the group policy editor screen, expand the Computer configuration folder and locate the following item: Computer Configuration > Policies > Administrative Templates > System > Group Policy
5. Set Configure user Group Policy loopback processing mode to Enabled and set the Mode to Merge
6. On the group policy editor screen, expand the User configuration folder and locate the following item: User Configuration > Policies > Administrative Templates > Start Menu and Taskbar
7. Set Remove pinned programs from the Taskbar to Disabled
8. Set Remove pinned programs list from the Start Menu to Enabled
9. Set Start Layout to Enabled then point it to your shared .xml file you created earlier located in %logonserver%\NETLOGON\GUI\Unpin MS Store & Mail.xml
10. To save the group policy configuration, you will need to close the Group Policy editor.
11. Now link the W_GUI Tweaks group policy to an OU containing workstations.
12. Run gpupdate /force on the clients computer.
Hmm, the .xml didn’t show in my previous comment.
How do you post code here?
[code]
[/code]
Working with Win 10 pro.
how did you all get this to work? This is all I get.
C:\Windows>PinTo10.exe /PTFOL:”C:\Program Files (x86)\Microsoft Office\root\Office16\” /PTFILE:”WINWORD.EXE”
‘PinTo10.exe’ is not recognized as an internal or external command,
operable program or batch file.
The two files are in the same directory and the cmd file was ran as admin too.
Is pinto10.exe in C:\Windows? Your path points to it. If not, change your beginning command from pinto10.exe to the full path of the application (\\server\share\folder\pinto10.exe)
Is it possible to Pin and Unpin Universal apps like Edge and the Windows Store using this utility?
I’d really like to know this as well Joseph
I’m not sure about edge but the Windows Store app can be removed by disabling the windows store in Group Policy. I would imagine that edge works the same way.
I’m testing out this script and it works flawlessly with Windows 10, however, I can’t seem to get it to work with Windows 7 both 64- and 32-bit version, though I’ve changed the path to match the different OS version. Is there a way to make this work with Windows 7 & Windows 10 machines?
Try v2 of my app…
https://pinto10blog.wordpress.com/2016/09/10/pinto10/
Thank You! 🙂
No problem! 🙂
Hi, I’m the author of this tool. The latest version of PinTo10 can be downloaded here…
https://www.dropbox.com/s/yu1280tmtedqtxu/PinTo10_1.2.zip?dl=1
Or the PinTo10v2 version based on C# can be downloaded from here…
https://pinto10blog.wordpress.com/2016/09/10/pinto10/
Stuart
Hello Stuart
I am trying to use this tool to pin icons to windows 10 taskbar but it doesn’t seem to run via the GPO logon scripts policy.
Have this set for example in a bat file. If I run it manaully it works fine, but won’t run via GPO. oN BUIILD 1607 of windows 10.
“\\SERVER\NETLOGON\Windows10Pin\PinTo10.exe” /PTFOL01:’C:\ProgramData\Microsoft\Windows\Start Menu\Programs\’ /PTFILE01:’Word 2016.lnk’
Hi,
Have you checked that the “Word 2016.lnk” has the “Pin to Taskbar” verb visible when you right-click it?
Also you don’t need the trailing backslash on the PTFOL01 parameter and you should probably use double quotes rather than single.
If that fails try version 2…
https://pinto10blog.wordpress.com/2016/09/10/pinto10
Stuart
A second thought is that login scripts running on systems where UAC is enabled and a user is admin run in admin context which is not visible to the user context (old problem but will exist if running this as a GPO). We have to have our login scripts register scheduled tasks to run on creation. Can you confirm it does doesn’t work for admins and standard users.
https://pcloadletter.co.uk/2010/05/15/missing-network-drives/
I checked your syntax from the first post and it seems fine. Confirm if running the command locally works (which I believe it will) and if so then you’ll need to script it to create a scheduled task to re-run the script in the user context.
Stuart
Hello Stuart
I have tested locally on both admin and standard user and it works fine. I did get it to run once during login, by having a script copy the files to the client machine and then run c:\Pin\pinitem.cmd. This only worked once and never again and logon delay was set to 1 minute to ensure user was fully logged in.
UAC is disabled for user via GPO so that shouldn’t cause an issue. How can I add a task to the script to make it run after login in the user context as you have stated above?
Personally I wouldn’t have it run as a GPO but simply have it as a RunOnce in the Default User registry hive. Microsoft have deprecated the logoff script functionality and made it hard to do. The link I posted earlier outlines a VBS script that can do scheduled task creation if you’re determined to keep going down that route though. We use it for our drive mapping login script (that we’re shortly looking at moving away from) but it really makes things more trouble than it’s worth.
Stuart
https://pcloadletter.co.uk/2010/05/15/missing-network-drives/
Dear Joseph,
Very nice tool. Thanks a lot!
One small bug: when used with /USFOL switch the app produces a pop-up window “This is a command line tool…”
Can you please correct this?
Hi Slava – I didn’t write this tool but I will pass on that bug.
Hi Joseph,
is it possible to get a corrected version?
Thanks a lot.
Markus
Joseph,
Pretty cool trick I had tried to set the taskbar in my reference image only to find out that wasn’t working due to the new way Microsoft is handling the taskbar. This will be great for me to push out the shortcuts to users taskbars that I’ve already imaged. However I’d like to take this one more step and remove the Microsoft Edge shortcut from the taskbar. Do you know what I’d place in the cmd file for this?
I also liked seeing that Martin is recommending to push the files out to the PCs and run them locally this is something I had started doing as we have a lot of mobile users and I was worried about it not working correctly if they didn’t have a connection to our network when they went to log in.
Thanks,
Matt
Thank you Matt. I haven’t actually tried removing yet but the pinto10.exe has a remove parameter to it. I think you will see an example of that in the readme.
Joseph, 2 thoughts on that – although it is an overall really good post 🙂
a) I disencourage the use of logoff scripts for things that do not really need to be ran at logoff. Logoff scripts run sync, so they are likely to introduce a delay in the logoff/shutdown experience
b) I also disencourage dropping files into sysvol – distribute them to the clients (%programdata% or whereever you like) and call them locally. This has several advantages:
1. They will be executed even if there’s no connectivity
2. Network bandwith doesn’t matter
3. Sysvol and replication traffic stay small
Two very good points Martin! Especially item 2. I’ll add a comment in the post about it.