Pinning shortcuts by GPO - Officially you can't do it. This is a design decision by Microsoft to stop OEMs pre-populating pinned start menus and taskbars with crap. Unofficially, there is a workaround. You can use a login script which effectively emulates the mouse clicks and key presses which pin shortcuts. This is the one that we use:
Code:
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
Set WshShell = WScript.CreateObject("WScript.Shell")
'Declare variables
Dim arrOfficeArray (4)
Dim strOCSIcon
Dim strCalculatorIcon
Dim strNotepadIcon
Dim i
'Declare constants
Const CSIDL_COMMON_PROGRAMS = &H17
Const CSIDL_PROGRAMS = &H2
'Initialize variables
arrOfficeArray(0) = "Microsoft Outlook 2010.lnk"
arrOfficeArray(1) = "Microsoft Word 2010.lnk"
arrOfficeArray(2) = "Microsoft Excel 2010.lnk"
arrOfficeArray(3) = "Microsoft PowerPoint 2010.lnk"
arrOfficeArray(4) = "Microsoft OneNote 2010.lnk"
strCalculatorIcon = "Calculator.lnk"
strNotepadIcon = "notepad.exe"
strIEIcon = "iexplore.exe"
strKeyPath = "Software\LSFC"
strValueName = "Pinned"
objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
If IsNull(dwValue) Then
'Checks for registry entry, if not there then pins shortcuts
' Wscript.Echo "The registry key does not exist."
On Error Resume Next
'Sleep script to allow shortcuts to copy down
WScript.Sleep(500)
'Pin to taskbar - Outlook, Word, Excel, PowerPoint, OneNote, OCS
Set objShell = CreateObject("Shell.Application")
Set objAllUsersProgramsFolder = objShell.NameSpace(CSIDL_COMMON_PROGRAMS)
Set objMyProgramsFolder = objShell.NameSpace(CSIDL_PROGRAMS)
strAllUsersProgramsPath = objAllUsersProgramsFolder.Self.Path
'wscript.echo("strAllUsersProgramsPath = " & strAllUsersProgramsPath)
strMyProgramsFolderPath = ("C:\ProgramData\shared start menu")
'wscript.echo("strMyProgramsFolderPath = " & strMyProgramsFolderPath)
'Pin to Start Menu and Taskbar - IE
Set objFolder = objShell.Namespace("C:\program files (x86)\Internet Explorer")
Set objFolderItem = objFolder.ParseName(strIEIcon)
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Pin to Start Menu" Then objVerb.DoIt
Next
'Pin Windows Explorer to taskbar
Set objFolder = objShell.Namespace("C:\windows")
Set objFolderItem = objFolder.ParseName("Explorer.exe")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Pin to Taskbar" Then objVerb.DoIt
Next
Set objFolder = objShell.Namespace(strAllUsersProgramsPath & "\Microsoft Office")
For i = 0 To 2
Set objFolderItem = objFolder.ParseName(arrOfficeArray(i))
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Pin to Taskbar" Then objVerb.DoIt
Next
Next
Set objFolder = objShell.Namespace(strAllUsersProgramsPath & "\Microsoft Office")
Set objFolderItem = objFolder.ParseName(arrOfficeArray(0))
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Pin to Start Menu" Then objVerb.DoIt
Next
'Write registry entry to stop shortcuts being pinned again
WSHShell.RegWrite "HKEY_CURRENT_USER\Software\LSFC\Pinned", "Yes"
Else
wscript.sleep(10)
' Wscript.Echo "The registry key exists. (" & dwValue & ")"
End If That script includes code to add an entry to the registry so user removed shortcuts don't constantly get re-added on each logon.
I can't take credit for all of this script, I found it elsewhere (possibly even here!) and adapted it to my needs.