Андрей Попов - Windows Script Host для Windows 2000/XP
/* РРјСЏ: SpecFold2.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                 */
/* Описание: Вывод названий заданных специальных папок Windows   */
/******************************************************************/
var WshShell, WshFldrs, s;  //Объявляем переменные
//Создаем объект WshShell
WshShell = WScript.CreateObject("Wscript.Shell");
//Создаем объект WshSpecialFolders
WshFldrs = WshShell.SpecialFolders;
//Формируем строки с путями к конкретным специальным папкам
s="Некоторые специальные папки:nn";
s+="Desktop:t"+WshFldrs("Desktop")+"n";
s+="Favorites:t"+WshFldrs("Favorites")+"n";
s+="Programs:t"+WshFldrs("Programs");
WScript.Echo(s); //Выводим сформированные строки на экран
/************* Конец *********************************************/
Реализация того же сценария на языке VBScript приведена в листинге 2.41.
Листинг 2.41. Доступ к определенным специальным папкам (VBScript)'******************************************************************
' РРјСЏ: SpecFold2.vbs
' Язык: VBScript
' Описание: Вывод названий заданных специальных папок Windows
'******************************************************************
Option Explicit
Dim WshShell, WshFldrs, s  ' Объявляем переменные
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("Wscript.Shell")
' Создаем объект WshSpecialFolders
Set WshFldrs = WshShell.SpecialFolders
' Формируем строки с путями к конкретным специальным папкам
s="Некоторые специальные папки:" & vbCrLf & vbCrLf
s=s+"Desktop:"+WshFldrs("Desktop") & vbCrLf
s=s+"Favorites:"+WshFldrs("Favorites") & vbCrLf
s=s+"Programs:"+WshFldrs("Programs")
WScript.Echo s  ' Выводим сформированные строки на экран
'************* Конец *********************************************/
Создание ярлыков в специальных папках
Для того чтобы из сценария создать ярлык в специальной папке (рабочий стол, меню Пуск (Start) и т.п.) или изменить свойства уже существующего ярлыка, необходимо:
1. Рспользуя коллекцию WshSpecialFolders, узнать путь Рє нужной специальной папке.
2. С помощью метода CreateShortcut объекта WshShell создать объект WshShortcut (WshUrlShortcut) для связи с ярлыком в этой папке.
3. Задать или изменить свойства ярлыка с помощью соответствующих методов объекта WshShortcut (WshUrlShortcut).
4. Сохранить ярлык с помощью метода Save объекта WshShortcut (WshUrlShortcut).
Объект WshShortcut предоставляет доступ к следующим свойствам ярлыков (рис. 2.17):
□ Объект (Target);
□ Рабочая папка (Start in);
□ Быстрый вызов (Shortcut key);
в–Ў РћРєРЅРѕ (Run);
□ Комментарий (Comment).
Кроме этого, с помощью объекта WshShortcut можно сменить значок, который соответствует ярлыку.
Р РёСЃ. 2.17. Свойства ярлыка РІ Windows РҐР
Остальных свойств, имеющихся у ярлыков в Windows ХР, объект WshShortcut не поддерживает (например, нельзя установить или сбросить флажок, позволяющий запускать процесс в отдельном адресном пространстве или под другой учетной записью пользователя).
В качестве примера ниже приведен сценарий Shortcut.js (листинг 2.42), в котором создается ярлык "Мой ярлык.lnk" на Блокнот (notepad.exe), причем этот ярлык может быть сохранен либо в меню Программы (Programs) работающего пользователя, либо на его рабочем столе. Выбор специальной папки в сценарии производится с помощью диалогового окна, которое создается методом Popup объекта WshShell (рис. 2.18).
Рис. 2.18. Диалоговое окно для выбора специальной папки
Рис. 2.10. Свойства ярлыка "Мой ярлык.lnk"
Для создаваемого ярлыка выбирается значок из файла Shell32.dll, находящегося в подкаталоге System каталога Windows (в Windows 95/98 этот файл находится в подкаталоге System), назначается комбинация горячих клавиш <Ctrl>+<Alt>+<N> и устанавливается максимизированный тип окна (рис. 2.19).
Листинг 2.42. Доступ к определенным специальным папкам (JScript)/*****************************************************************/
/* РРјСЏ: Shortcut.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                */
/* Описание: Создание ярлыков в специальных папках              */
/*****************************************************************/
//Объявляем переменные
var WshShell,MyShortcut,PathTarg,PathIcon,Res,PathShortcut;
//Рнициализируем константы для диалоговых РѕРєРѕРЅ
var vbYesNo=4,vbQuestion=32,vbYes=6;
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Выводим запрос для выбора папки, в которой будет создан ярлык
Res=WshShell.Popup("Где создать ярлык?nДа - на рабочем столеnНет - в меню Программы",0,
 "Работа с ярлыками",vbQuestion+vbYesNo);
if (Res==vbYes) //Нажата кнопка Да
 //Определяем путь к рабочему столу
В PathShortcut = WshShell.SpecialFolders("Desktop");
else
 //Определяем путь к меню Программы
В PathShortcut = WshShell.SpecialFolders("Programs");
//Создаем объект-ярлык
MyShortcut = WshShell.CreateShortcut(PathShortcut+"\Мой ярлык.lnk");
//Устанавливаем путь к файлу
PathTarg=WshShell.ExpandEnvironmentStrings("%windir%\notepad.exe");
MyShortcut.TargetPath = PathTarg;
//Назначаем комбинацию горячих клавиш
MyShortcut.Hotkey = "CTRL+ALT+N";
//Выбираем иконку из файла SHELL32.dll
PathIcon=
В WshShell.ExpandEnvironmentStrings("%windir%\system32\SHELL32.dll");
MyShortcut.IconLocation = PathIcon+", 1";
MyShortcut.WindowStyle=3;  //Устанавливаем тип окна (максимизировано)
MyShortcut.Save(); //Сохраняем ярлык
WScript.Echo("Ярлык создан|");
/************* Конец *********************************************/