Андрей Попов - Windows Script Host для Windows 2000/XP
//Выводим запрос на запуск сразу всех программ
Res=WshShell.Popup("Запустить сразу все программы?", 0,
 "Выборочная автозагрузка", vbQuestion+vbYesNo);
//Определяем, нажата ли кнопка "Да"
IsRunAll=(Res==vbYes);
Далее в цикле while производится перебор всех файлов из коллекции Files; переменная File соответствует текущему файлу в коллекции:
//Цикл по всем файлам каталога выборочной автозагрузки
while (!Files.atEnd()) {
 //Создаем объект File для текущего элемента коллекции
В File=Files.item();
 //Переходим к следующему файлу в коллекции
В Files.moveNext();
}
Если ранее был выбран интерактивный режим запуска программ (переменная IsRunAll равна false), то мы выводим запрос на запуск текущего файла (рис. 11.19):
//Обнуляем переменную Res Res=0;
if (!IsRunAll) //Программы нужно запускать по одной
 //Выводим запрос на запуск одной программы
 Res=WshShell.Popup("Запустить "+File.Name+"?", 0, "Выборочная автозагрузка", vbQuestion+vbYesNo);
Рис. 11.19. Запрос на запуск одной программы из папки автозагрузки
Если пользователь решил запустить программу (переменная Res равна vbYes) или программы запускаются в пакетном режиме, то мы запускаем текущую программу в минимизированном окне с помощью метода Run объекта WshShell:
if ((IsRunAll) || (Res=vbYes))
 //Запускаем текущую программу в минимизированном окне
В WshShell.Run("""+File.Path+" "", vbMinimizedFocus);
Так как в полном имени запускаемой программы могут быть пробелы, это имя нужно заключить в двойные кавычки с помощью escape-последовательности ".
ЗамечаниеДругим вариантом запуска с помощью метода Run программ, имена которых содержат пробелы, можно использовать короткие имена папок и файлов посредством свойства ShortPath объекта File: WshShell.Run(File.ShortPath, vbMinimizedFocus);
Полностью текст сценария Logon.js приведен в листинге 11.10.
Листинг 11.10. Сценарий входа, позволяющий выбирать программы для автозагрузки//*******************************************************************/
/* РРјСЏ: Logon.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                  */
/* Описание: Сценарий входа, позволяющий выбирать программы для   */
/*          автозагрузки                                         */
/*******************************************************************/
//Объявляем переменные
var
В FSO,В В В В В В В В //Ркземпляр объекта FileSystemObject
В WshShell,В В В //Ркземпляр объекта WshShell
В WshFldrs,В В В //Ркземпляр объекта WshSpecialFolders
 PathStartup, //Путь к папке выборочной автозагрузки
В Folder,В В В В В //Ркземпляр объекта Folder для папки
             //выборочной автозагрузки
 Files,      //Коллекция файлов в папке выборочной автозагрузки
В File,В В В В В В В //Ркземпляр объекта File для ярлыка РІ папке
             //выборочной автозагрузки
 Res,        //Результат нажатия кнопок в диалоговых окнах
 IsRunAll;   //Логический флаг, указывающий, надо ли запустить
             //сразу все программы из автозагрузки
//Рнициализируем константы для диалоговых РѕРєРѕРЅ
var vbYesNo=4,vbQuestion=32,vbYes=6,vbOkOnly=0,vbMinimizedFocus=2;
//Создаем объект WshShell
WshShell=WScript.CreateObject("Wscript.Shell");
//Создаем объект WshSpecialFolders
WshFldrs=WshShell.SpecialFolders;
//Определяем путь к папке выборочной автозагрузки
PathStartup=WshFldrs.item("AllUsersStartMenu")+"\Выборочная автозагрузка\";
//Создаем объект FileSystemObject
FSO=WScript.CreateObject("Scripting.FileSystemObject");
//Создаем объект Folder для папки выборочной автозагрузки
Folder=FSO.GetFolder(PathStartup);
//Создаем коллекцию файлов каталога выборочной автозагрузки
Files=new Enumerator(Folder.Files);
//Выводим запрос на запуск сразу всех программ
Res=WshShell.Popup("Запустить сразу все программы?",0,
 "Выборочная автозагрузка",vbQuestion+vbYesNo);
//Определяем, нажата ли кнопка Да
IsRunAll=(Res==vbYes);
//Цикл по всем файлам каталога выборочной автозагрузки
while (!Files.atEnd()) {
 //Создаем объект File для текущего элемента коллекции
В File=Files.item();
 //Обнуляем переменную Res
В Res=0;
 if (!IsRunAll) //Программы нужно запускать по одной
 //Выводим запрос на запуск одной программы
 Res=WshShell.Popup("Запустить "+File.Name+"?",0,
  "Выборочная автозагрузка",vbQuestion+vbYesNo);
В if ((IsRunAll) || (Res==vbYes))
 //Запускаем текущую программу в минимизированном окне
В WshShell.Run("""+File.Path+""",vbMinimizedFocus);
 //Переходим к следующему файлу в коллекции
В Files.moveNext();
}
/************* Конец *********************************************/
Резервное копирование документов пользователя РїСЂРё окончании сеанса работыВ
Для каждого пользователя Windows ХРв каталоге Documents and Settings автоматически создается личная папка, имя которой совпадает с именем этого пользователя. В подкаталоге "Мои документы" (My Documents) этой папки по умолчанию сохраняются все созданные пользователем документы. Для того чтобы всегда иметь резервную копию документов пользователей, можно написать универсальный сценарий выхода, в котором будет происходить копирование всех файлов и подкаталогов из пользовательского каталога "Мои документы" в другой каталог с именем пользователя. В нашем примере резервные копии документов будут сохраняться в каталоге D:Backup, т.е. при выходе пользователя Popov все его документы скопируются в каталог D:BackupPopov, а при выходе пользователя Kazakov — в каталог D:BackupKazakov.