While playing with a code today, I wanted to pin a few of my applications to start menu using PowerShell. I know that it is pretty easy through “Shell.Application” Com Object by accessing verbs() of the executable or link file.
I quickly verified that applications I want to link to start menu has the verb “Pin to Start”. So, I thought its matter of calling that verb through PowerShell. In past I have done similar thing for pinning applications to task bar(read this post for details — http://techibee.com/powershell/pin-applications-to-task-bar-using-powershell/685) , so thought of applying same logic here. But at the end failed miserably.
Though the application I want to pin to start menu has this verb when I right click on it, same is not visible when accessed programmatically. Do you understand what I am saying? See the below example.
For demonstration, I want to pin “Microsoft Word” application to start menu. So, I right clicked on windows.exe to see if it has verb called “Ping to start” – yes it has.
Now I tried to access the verbs programmatically using PowerShell. Below few lines of code will return verbs of the given application.
$shell = New-Object -ComObject "Shell.Application" $Folder = $shell.NameSpace("C:\Program Files\Microsoft Office 15\root\office15") $exe = $Folder.ParseName("winword.exe") $exe.Verbs()
After running above code, you can clearly see that there is no Pin to Start verb in output. So you cannot call it programmatically.
After searching for some time, I came across a post in MSDN forums which says that programatical access to pin to start verb is restricted in Windows 8.1. This means you cannot no more perform pin to start menu operation using scripts/tools. Only users can interactively do this.
Then how to customize the start screen in Windows 8.1 environment? This I will cover in my next post. Stay tuned.