Background
During my work, I got one requirement of pinning a specific shortcut file (*.lnk) onto the Windows 7 Taskbar, after investigating I found programmatically achieving this is “not permitted”, refer to the MSDN article here.
A small set of applications are pinned by default for new installations. Other than these, only the user can pin further applications; programmatic pinning by an application is not permitted.
However, the exception comes from Windows Script Hosting, a snippet of VBscript can achieve my requirement, I read several articles (refer to the end of this post) and wrote two VBS scripts shown below:
Pin to Taskbar
Option Explicit
Dim ShellApp, FSO, Desktop
Set ShellApp = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Desktop = ShellApp.NameSpace("C:\Users\Wayne\Desktop")
Dim LnkFile
LnkFile = Desktop.Self.Path&"\ScheduleNotifier.lnk"
If(FSO.FileExists(LnkFile)) Then
Dim tmp, verb
Dim desktopImtes, item
Set desktopImtes = Desktop.Items()
For Each item in desktopImtes
If (item.Name = "ScheduleNotifier") Then
For Each verb in item.Verbs
If (verb.Name = "Pin to Tas&kbar") _
Then
verb.DoIt
End If
Next
End If
Next
End If
Set FSO = Nothing
Set ShellApp = Nothing
Unpin from Taskbar
Option Explicit
Dim ShellApp, FSO, Desktop
Set ShellApp = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Desktop = ShellApp.NameSpace("C:\Users\Wayne\Desktop")
Dim LnkFile
LnkFile = Desktop.Self.Path&"\ScheduleNotifier.lnk"
If(FSO.FileExists(LnkFile)) Then
Dim tmp, verb
Dim desktopImtes, item
Set desktopImtes = Desktop.Items()
For Each item in desktopImtes
If (item.Name = "ScheduleNotifier") Then
For Each verb in item.Verbs
If (verb.Name = "Unpin from Tas&kbar") _
Then
verb.DoIt
End If
Next
End If
Next
End If
Set FSO = Nothing
Set ShellApp = Nothing
Although two snippets of VBS code are simple and straight-forward, they have one serious limitation. It only supports one specified language, attention of this line of code:
If (verb.Name = "Pin to Tas&kbar") Then
On Chinese locale, I have to replace “Pin to Tas&kbar” with “锁定到任务栏(&K)”, so in order to support more languages, I need to know each exact {Pin sentence} to do the pinning, you know, Google translation won’t always work in this case:), so I definitely don’t want to do that…
You probably ask WHY??? Because FolderItemVerb object only has one property: Name
, and Name
is definitely “language sensitive“, MSDN does mention there are two more properties “Application
” and “Parent
” however they are “Not implemented”.
Several Tips
- For a specific Windows user, all shortcuts pinned onto taskbar store the shortcuts files under
%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
- OEM manufacturers could “pre-pin” some shortcut onto the Taskbar before shipping the PC/laptops to the consumers, simply run batch command below during the DASH (see Desktop and mobile Architecture for System Hardware) process:
Rem Pining OEM Welcome Center app on task barReg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TBDEn /v SBOEM0 /t REG_EXPAND_SZ /d “SomeFile.lnk” /f
References