Введение

Примечание редактора. Сайт Tom’s Hardware Guide ориентирован, в первую очередь, на «железо». Но, как нам кажется, нашим читателям пригодится небольшой экскурс в скрипты Windows Visual Basic (VBScript) и модификацию реестра Windows.
Автор этой статьи — приверженец VBScript. И одна из целей данной статьи заключается в том, чтобы познакомить вас с этим языком программирования. Пусть даже язык VBScript вам не интересен, но мы покажем, как с его помощью можно удалить стрелки на значках запуска программ (ярлыках). Кроме кода VBScript, мы предоставим инструкции, как выполнить эту операцию с помощью правки реестра Windows.
Следует помнить, что метод IsShortCut отлично работает под XP и Windows Server 2003, но под Vista могут возникнуть некоторые негативные побочные эффекты.
Благодаря файлам .reg вам не нужно изучать VBScript, чтобы выполнить необходимые операции. Впрочем, если прибегнуть к помощи VBScript, примеры на этом языке покажут, как легко можно создавать объекты. В данном случае объект и его метод .RegDelete модифицируют реестр Windows. В принципе, с помощью скриптов можно использовать разные методы, чтобы автоматизировать задачи, которые можно выполнять через графический интерфейс.
Удаление стрелок с ярлыков является классическим случаем для Microsoft, когда реестр можно править тремя способами: с помощью VBScript, файла .reg и, конечно, regedit.
Метод VBScript, который удаляет значение IsShortCut, работает под XP и Vista. Впрочем, под Vista удаление значений реестра создаёт проблемы со значками в папке «Избранное/Favorites».
Если вы просто хотите как можно быстрее убрать стрелки, используйте файл .reg. Если для удаления стрелок вы будете использовать способ VBScript, то файлы .reg станут дополнительным средством для возвращения в исходное состояние реестра перед тем, как вы запустите скрипт во второй раз.
В использовании скрипта есть и скрытый бонус: вы познакомитесь с такими командами для работы с реестром, как .RegWrite, .RegDelete и .RegRead.
Два скрипта Visual Basic
Пример 1 относительно прост. В нём создаётся objShell и выполняется метод .RegDelete.
Пример 2 сложнее, в нём проводится простейшая проверка на ошибки. В примере 2 создаётся значение REG_SZ для замены, что является эквивалентом переименования IsShortCut.
Скрипты предназначены для XP и Windows 2003. Они будут работать и под Vista, но, как мы уже отмечали, вы получите не очень красивые побочные эффекты на значках в папке «Избранное/Favorites».
Пример 1. Простой скрипт для удаления стрелок с ярлыков
Инструкции
- Предварительный шаг: чтобы проверить скрипт, создайте ярлык. Например, нажмите правой клавишей мыши на рабочем столе, выберите «Создать» и «Ярлык». Затем укажите программу «calc» и нажмите «Готово». На рабочем столе появится значок со стрелкой.
- Скопируйте приведённый ниже скрипт в блокнот или редактор скриптов, такой как OnScript.
- Сохраните файл с расширением .vbs, например, NoArrowEg1.vbs.
- Запустите скрипт VBScript, нажав в появившемся окне «OK».
- Чтобы проверить действия, выполняемые с реестром, мы рекомендуем открыть regedit и перейти в раздел реестра, указанный strRoot.
- Да, чтобы проверить, что стрелки исчезли, нужно выйти из системы и войти вновь. На значках не должно быть стрелок.
‘ NoArrowEg1.vbs
‘ ПримерVBScript для удаления стрелок на значках в XP
‘ и Windows 2003.
‘ —————————————————————‘
‘
Option Explicit
Dim objShell, strRoot, strRead, strDelete, strCreate
strRoot = «HKEY_CLASSES_ROOTlnkfileIsShortCut»
‘ Создаём объект Shell
Set objShell = CreateObject(«WScript.Shell»)
strDelete = objShell.RegDelete(strRoot)
WScript.Echo «Ошибка номер: » & err.number & » проверяйте » & strRoot
strDelete = null
WScript.Quit
Что можно узнать нового?
- Посмотреть, как VBScript создаёт объект objShell, потом, как .RegDelete выполняет работу с реестром.
- В VBScript HKEY_CLASSES_ROOT можно сократить до HKCR. (Ещё есть HKLM и HKCU.) Удивительно, но использовать HKCR или HKLM в файлах .reg нельзя.
- Метод RegDelete удаляет значение из реестра на основе strName. Если strName заканчивается обратным слэшем (), то strName считается ключом, иначе — значением.
- Ключ IsShortCut можно найти и в других местах, например, в HKCRpiffile и HKCRWSHFile.
Пример 2. Полный скрипт для удаления стрелок ярлыков
Вместо простого удаления соответствующего значения в реестре, мы решили создать новую запись. Мы получаем иллюзию переименования оригинального значения IsShortCut в IsNotShortcut. С образовательной точки зрения код является примером операций .RegWrite и .RegRead. Кстати, этот скрипт содержит и примитивный код проверки ошибок. В частности, разедел «If» вместе с On Error Resume Next отрабатывает ситуацию, когда скрипт запущен второй раз.
Инструкции
- Если вы уже запускали скрипт из примера 1, то запустите второй файл.reg, чтобы восстановить значение «IsShortCut».
- Мы предполагаем, что на рабочем столе у вас есть ярлыки. Если нет, создайте ярлык. Например, нажмите правой клавишей мыши на рабочем столе, выберите «Создать» и «Ярлык». Затем укажите программу «calc» и нажмите «Готово». На рабочем столе появится значок со стрелкой.
- Скопируйте скрипт, приведённый ниже, в блокнот или редактор скриптов, например, OnScript.
- Сохраните файл с расширением .vbs, например, NoArrowEg2.vbs.
- Запустите скрипт, нажав в окне подтверждения «OK».
- Мы рекомендуем проверить значение в реестре, на которое указывает strRoot.
- Да, чтобы проверить, что стрелки исчезли, нужно выйти из системы и войти вновь. На значках не должно быть стрелок.
‘ NoArrowEg2.vbs
‘ Пример VBScript для удаления стрелок с ярлыков под XP
‘ и Windows 2003.
‘ —————————————————————‘
‘
Option Explicit
Dim objShell, strRoot, strRegRead, strNew
Dim strRead, strDelete, strCreate
err.number = 0
strRoot = «HKCRlnkfile»
strNew = strRoot & «IsNotShortCut»
strRegRead = strRoot & «IsShortCut»
‘ Создаём объект Shell
Set objShell = CreateObject(«WScript.Shell»)
On Error Resume Next
strRead = objShell.RegRead(strRegRead)
If err.number => 0 then
strCreate = objShell.RegWrite(strNew,»», «REG_SZ»)
strDelete = objShell.RegDelete(strRegRead)
End if
WScript.Echo «Ошибка номер » & err.number & » проверьте » & strRoot
On Error GoTo 0
strCreate = null
strDelete = null
WScript.Quit
Что можно узнать нового?
- В разделе «If err.number» есть примитивный код предотвращения ошибки, если скрипт запущен второй раз.
- Операция RegWrite имеет скрытое свойство создания. Посмотрите, как операция создаёт родительскую запись, после чего присваивает ей значение. Перед тем, как вы запустите скрипт в первый раз, записи «IsNotShortCut» нет. Благодаря операции .RegWrite в реестре создаётся новая запись REG_SZ под названием «IsNotShortCut» с нулевым значением («»). Нулевое значение, кстати, можно проверять в таких операциях, как «If».
- Метод RegDelete удаляет запись из реестра, обозначенную strName. Если strName заканчивается обратным слэшем (), то strName обрабатывается как ключ, иначе — как значение.
- Ключ IsShortCut можно найти и в других местах, например, в HKCRpiffile и HKCRWSHFile.
Используем файлы .reg для правки реестра
Ниже представлены два файла .reg. Первый убирает стрелки с ярлыков, второй их восстанавливает. Файлы предназначены для XP и Windows Server 2003, но будут работать и под Vista с ограничениями, упомянутыми выше.
Инструкции
- Скопируйте текст в блокнот.
- Сохраните как ArrowGone.reg.
- Выполните файл, чтобы его содержание было внесено в реестр.
- Обратите внимание на знак минуса в команде «IsShortCut»=-. Вокруг него нет кавычек. Эта команда удаляет значение IsShortCut и сам ключ IsShortCut. Если вы введёте команду «IsShortCut»=»-«, то тогда ключ удалён не будет, а его значение поменяется на минус. «IsNotShortCut»=»» создаёт ключ и присваивает ему нулевое значение.
Файл .reg для удаления стрелок с ярлыков
Важно: Между «Windows Registry Editor Version 5.00» и [HKEY…] должна быть пустая строка.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTlnkfile]«IsShortCut»=-«IsNotShortCut»=»»
Вот и весь файл!
Файл .reg для восстановления стрелок на ярлыках
Этот файл .reg восстанавливает значение в реестре по умолчанию, когда на ярлыках появляются стрелки. То есть файл восстанавливает состояние до запуска скриптов.
Инструкции
- Скопируйте текст в блокнот.
- Сохраните как ArrowBack.reg.
- Выполните файл, чтобы его содержание было внесено в реестр.
- Обратите внимание, что ключу «IsShortCut» теперь присвоено нулевое значение «IsShortCut»=»». Ключ вернулся обратно в реестр. Кстати, ключ IsNotShortCut мы удалять не стали.
Важно: опять же, между Windows Registry Editor Version 5.00 и [HKEY…] следует оставить пустую строчку
Windows Registry Editor Version 5.00
«IsNotShortCut»=-
Вот и весь файл!
Заключение

Стрелки на ярлыках не нравятся многим пользователям. В нашей статье мы изменили значение реестра, которое отвечает за них. В скриптах читатели могут познакомиться с такими операторами, как .RegWrite, .RegRead и, в частности, RegDelete, которые позволяют менять значения в реестре Windows.
Мы добавили в статью файлы реестра .reg, которые позволяют легко и быстро достигать той же цели, а именно, удаляют стрелки с ярлыков.