Ezine 136 showed us how to remove the arrows from XP’s shortcuts by deleting a registry value called IsShortCut. Because deleting this IsShortCut key has unsightly side effects on Vista, I developed a ‘Shell Icons’ method to eliminate that annoying shortcut arrow.
- This Week’s Secret
- This Week’s Mission
- Example Script: To Remove the Arrow from Shortcuts
- Your Bonus: Ico.reg File to remove shortcut arrows on Vista
- More Information on Remove Shortcut Arrows in Vista
- How to Remove Shortcut Arrows with .reg File
- Summary of Remove Arrows on Shortcut
This Week’s Secret is perspective. If you ever lose the sight of one eye, even temporarily, you appreciate how difficult it is to judge distance. Hopefully you regain the use of both eyes and once again appreciate the perspective offered by binocular vision. What has this to do with computing in general, and VBScript in particular? The answer is if you find two ways of doing the same thing you gain perspective and true understanding of the underlying task.
Last week we looked at the registry’s HKEY_CLASSES_ROOT (HKCR), this week we make the journey to HKEY_LOCAL_MACHINE. Last week we focused on a REG_SZ called IsShortCut, this week we turn our eyes to a registry folder called Shell Icons.
This Week’s Mission is to make a ‘blind’ shortcut icon with no arrow. Whereas last week we were destructive and ruthlessly deleted an XP registry value, this week we will be constructive and thoughtfully create a new value to control the Vista shortcut arrow.
To achieve our mission, we have two methods for modifying the Vista registry, creating a VBScript or merging a .reg file. Which ever method you choose, focus on my noarrow.ico file, copy and paste it to your \Windows folder.
I admit that in real life you would probably look for a .reg file to achieve or mission and remove the arrows. However, a hidden bonus of using a script to see off the shortcut arrows is that we learn about the range of registry command: .RegWrite and .RegRead, with a view to applying these methods to other scripts.
Tired of writing scripts? The User Management Resource Administrator solution by Tools4ever offers an alternative to time-consuming manual processes.
It features 100% auto provisioning, Helpdesk Delegation, Connectors to more than 130 systems/applications, Workflow Management, Self Service and many other benefits. Click on the link for more information onUMRA.
This script is designed for Vista, I emphasise that both XP and Windows 2003 are blind to the registry values in the Shell Icons folder. For Vista you have a choice. The easier option is to use an icon from the built-in file Shell32.dll. However, the better option is to obtain a transparent ico file, and copy it to the \ Windows folder. As is so often the case if you take the easier option, the result is disappointing.
- Preliminary step: In order to give the script a chance, create a shortcut. For example, at the desktop, right-click, new, shortcut and type ‘calc’. Press ‘Finish’ and the shortcut, complete with arrow will arrive on the desktop.
- Copy and paste the script below into notepad, or get a script editor such as OnScript.
- Key decision do you copy noarrow.ico to the \ windows folder and stick with :
strIcon = "%SystemRoot%\\noarrow.ico,0"
Or do you not bother getting the ico file and instead modify strIcon thus :
strIcon = "%SystemRoot%\\System32\shell32.dll,52"
- Save the file with .vbs extension e.g. NoArrowVista.vbs
- I recommend that you investigate the registry section specified by strRoot.
- To check that the short arrows have disappear, simply logoff and logon again.
‘ Example VBScript to remove arrows on shortcuts on Vista.
‘ Author Guy Thomas http: //computerperformance.co.uk
‘ Version 2.2 – March 2007
Dim objShell, strRoot, strRegRead, strNew
Dim strRead, strIcon, strCreate
err.number = 0
strRoot = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Shell Icons\"
strNew = strRoot & "29"
strIcon = "%SystemRoot%\\noarrow.ico,0"
‘ Create the Shell object
Set objShell = CreateObject("WScript.Shell")
On Error Resume Next
strRead = objShell.RegRead(strNew)
If err.number < 0 then
strCreate = objShell.RegWrite(strNew, strIcon, "REG_SZ")
WScript.Echo "Error No: " & err.number & " check " & strNew
On Error GoTo 0
strCreate = null
‘ End of example script.
Note 1: Look out for the key method .RegWrite. Examine this line:
strCreate = objShell.RegWrite(strNew, strIcon, "REG_SZ"). Let us put the components under the microscope
a) strNew is the path to the base folder in the registry
b) strIcon is actually the name of the value
c) Finally we need to tell the registry the type of value, in this instance a string value (REG_SZ).
Copy the text below into notepad, save with a .reg extension, for example Ico.reg. Double click the .reg file and merge the values with your Vista registry. Remember to logoff and then logon again.
Note 1: The blank line between the Registry Editor and [HKEY……..] is vital.
Note 2: In .reg files, you cannot abbreviate HKEY_LOCAL_MACHINE to HKLM.
Note 3: You could substitute %SystemRoot%\\System32\shell32.dll for: %SystemRoot%\\noarrow.ico,0
Summary of Remove Arrows on Shortcut
Those unsightly arrows on shortcuts can be most annoying. Here is a method where you can not only remove the arrow, but also learn about the Vista registry.
I have also included .Reg files, these are a quicker and more convenient method for achieving the same goal, namely creating a ‘blind’ shortcuts with no arrow.