/bundles/itninjaweb/img/Breadcrumb_cap_w.png
Hi,

does anyone know how to pin shortcuts to the XP startmenu with a package, or script

thanks in advance
Moray
0 Comments   [ - ] Hide Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
Answer this question or Comment on this question for clarity

Answers

0
Gidday Moray,

Yep, we've done it with some custom vb code and using active setup for the profile as this is a profile registry entry setting. We used it to pin Add New Programs to the Start Menu rather than Control Panel -> Add and Remove Programs ->Add New Programs.

You might want to modify it to your requirements:

Set objShell = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim strFileName, verbs, strProfile

strProfile = "C:\Documents and Settings\All Users"
Call FindFileName

Set objFolder = objShell.Namespace(strProfile & "\Start Menu\Network Applications")
Set objFolderItem = objFolder.ParseName(strFileName)
Set colVerbs = objFolderItem.Verbs

'find options
For Each objVerb in colVerbs
verbs = verbs & vbcrlf & objVerb
Next

'msgbox verbs

If (Instr (session.property("MaintenanceMode"), "Remove") = 0) Then
Call PinToStart

ElseIf (Instr (session.property("MaintenanceMode"), "Remove") <> 0) Then
Call RemoveFromStart
End If


Sub RemoveFromStart

If InStr(verbs, "Unp&in from Start menu") Then
'unpin from start menu
objFolderItem.InvokeVerb("Unp&in from Start menu")
End If

If oFSO.FileExists(strProfile & "\Start Menu\Add New Programs.lnk") Then
oFSO.DeleteFile strProfile & "\Start Menu\Add New Programs.lnk"
End If
End Sub

Sub PinToStart

If InStr(verbs, "P&in to") Then
'pin to start menu
objFolderItem.InvokeVerb("P&in to Start menu")
ElseIf (InStr(verbs, "P&in to") = 0) AND (InStr(verbs, "Unp&in") = 0) Then
oFSO.CopyFile strProfile & "\Start Menu\Network Applications\" & strFileName, strProfile & "\Start Menu\Add New Programs.lnk", True
ElseIf InStr(verbs, "p&in") Then
If oFSO.FileExists(strProfile & "\Start Menu\" & strFileName) Then
oFSO.DeleteFile(strProfile & "\Start Menu\" & strFileName)
End If
End If

End Sub





'--------------------------

Sub FindFileName
If oFSO.FileExists(strProfile & "\Start Menu\Network Applications\Add New Programs.lnk") Then
strFileName = "Add New Programs.lnk"
ElseIf oFSO.FileExists(strProfile & "\Start Menu\Network Applications\_Add New Programs.lnk") Then
strFileName = "_Add New Programs.lnk"
End If
End Sub

Hope this helps,

Cheers
Wayne
Answered 10/12/2006 by: WayneB
Blue Belt

Please log in to comment
0
Thanks for your quick response Wayne.

you mentioned it is a profile registry setting, do you know the reg keys so I can manipulate them directly.

I tried your code, and couldn't get it to work. it is a bit beyond my vbs skills

cheers
Moray
Answered 10/15/2006 by: Moray
Senior Yellow Belt

Please log in to comment
0
Hey Moray,

No probs; try these keys:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Start­Page]
FavoritesResolve [REG_BINARY]
Favorites [REG_BINARY]
FavoritesChanges [REG_DWORD]

Here is the MS site for the script info.
Pin to Start Menu

I didn't create the supplied script, it has been a work in progress from various people here at work. The last guy to work on it is OS at the moment, so I can't check with him. I know it works; though, there has been a few hurdles; mainly to get it to create the link for each profile that logs into the box. When I get the chance I'll do a bit more digging.

Cheers
Wayne
Answered 10/15/2006 by: WayneB
Blue Belt

Please log in to comment
0
Wayne,

thanks heaps mate, the scripting guys link is exactly what i needed.

cheers
Moray
Answered 10/15/2006 by: Moray
Senior Yellow Belt

Please log in to comment
0
here is a quick script to pin and unpin items

Option Explicit
On Error Resume next

Dim intPos
Dim objShell, objFolder, objFolderItem

intPos = InStrRev(Wscript.Arguments(0),"\")

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(left(Wscript.Arguments(0),intPos))
Set objFolderItem = objFolder.ParseName(right(Wscript.Arguments(0),len(Wscript.Arguments(0))-intPos))

If wscript.arguments.count > 1 Then
If ucase(Wscript.Arguments(1)) = "U" Then
objFolderItem.InvokeVerb("Unp&in from Start Menu")
wscript.quit
End If
End If

objFolderItem.InvokeVerb("P&in to Start Menu")
Answered 10/15/2006 by: Moray
Senior Yellow Belt

Please log in to comment
0
Hi,

The "Scripting Guy" approach works, but only with .exe files.
When I tailor it for .LNK files, it returns the following error:

---
Windows Script Host

Script: D:\Dev\Pin.vbs
Line: 4
Char:1
Object Required: 'AppFolderItem'
Code: 800A01A8
Source Microsoft VBScript runtime error
---

Here's the infamous script:

---
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\")
Set objFolderItem = objFolder.ParseName("test.lnk")
objFolderItem.InvokeVerb("P&in to Start Menu")
---

PLEASE HELP!!!
It has to be an Id10t error
Answered 12/11/2006 by: vortex3d
Yellow Belt

Please log in to comment
0
Hi
I have an issue with unpinning the shortcut from the Start Menu. When I right click on the shortcut and select the option "REmove from this list", the shortcut gets removed manually.

But when i try to use the following script to remove the shortcut it does not work.
Shortcut name in Start menu: Sap Logon Pad.lnk

Script Used:
************************************************************
dim objShell,filesystem,objFolder,objFolderItem, colVerbs
dim objVerb
Set objShell = CreateObject("Shell.Application")
set filesystem = CreateObject("scripting.Filesystemobject")
Set objFolder = objShell.Namespace(filesystem.GetParentFolderName("C:\Program Files\SAP\SapSetup\setup\SAL\saplgpad.s8l"))
Set objFolderItem = objFolder.ParseName(filesystem.GetFileName("C:\Program Files\SAP\SapSetup\setup\SAL\saplgpad.s8l"))
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
msgbox objVerb
If Replace(objVerb.name, "&", "") = "UnPin from Start Menu" Then objVerb.DoIt
Next

*****************************************************************
Please suggest if there is any other option to resolve this issue using VB script or batch script or some commands.
Answered 07/05/2011 by: amolpiyu
Senior Yellow Belt

Please log in to comment