Автор этой статьи - приверженец 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_ROOT\lnkfile\IsShortCut"
' Создаём объект 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 можно найти и в других местах, например, в HKCR\piffile и HKCR\WSHFile.
Пример 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 = "HKCR\lnkfile\"
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 можно найти и в других местах, например, в HKCR\piffile и HKCR\WSHFile.
Используем файлы .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_ROOT\lnkfile]
"IsShortCut"=-
"IsNotShortCut"=""
Вот и весь файл!
Файл .reg для восстановления стрелок на ярлыках
Этот файл .reg восстанавливает значение в реестре по умолчанию, когда на ярлыках появляются стрелки. То есть файл восстанавливает состояние до запуска скриптов.
Инструкции
- Скопируйте текст в блокнот.
- Сохраните как ArrowBack.reg.
- Выполните файл, чтобы его содержание было внесено в реестр.
- Обратите внимание, что ключу "IsShortCut" теперь присвоено нулевое значение "IsShortCut"="". Ключ вернулся обратно в реестр. Кстати, ключ IsNotShortCut мы удалять не стали.
Важно: опять же, между Windows Registry Editor Version 5.00 и [HKEY...] следует оставить пустую строчку
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\lnkfile]
"IsShortCut"=""
"IsNotShortCut"=-
Вот и весь файл!
Заключение
Стрелки на ярлыках не нравятся многим пользователям. В нашей статье мы изменили значение реестра, которое отвечает за них. В скриптах читатели могут познакомиться с такими операторами, как .RegWrite, .RegRead и, в частности, RegDelete, которые позволяют менять значения в реестре Windows.
Мы добавили в статью файлы реестра .reg, которые позволяют легко и быстро достигать той же цели, а именно удаляют стрелки с ярлыков.
Примечание редактора. Сайт Tom's Hardware Guide ориентирован, в первую очередь, на "железо". Но, как нам кажется, нашим читателям пригодится небольшой экскурс в скрипты Windows Visual Basic (VBScript) и модификацию реестра Windows.