Інтерактивний вибір програм автозавантаження

автозавантаження

Windows Script Host для Windows 2000/XP

Інтерактивний вибір програм автозавантаження

Розділи на цій сторінці:

Інтерактивний вибір програм автозавантаження

Як відомо, у підменюПрограми (Programs) стартового меню Windows є пунктАвтозавантаження (Startup), в який можна помістити ярлики тих програм, які мають бути автоматично запущені під час реєстрації користувача в системі. Однак у процесі завантаження свого профілю користувач не має можливості запустити тільки певні програми з папки автозавантаження - можна або запустити всі програми, або не запускати жодної (для цього необхідно в процесі реєстрації в системі утримувати клавішу ).

Ми напишемо сценарій Logon.js, за допомогою якого користувач при вході зможе вибрати програми, що запускаються; призначивши цей сценарій як сценарій входу групової політики, ми зробимо процес автозавантаження програм інтерактивним.

Почнемо ми з того, що створимо в каталозі %SystemDrive%Documents and SettingsAll UsersГоловне меню, в якому зберігаються ярлики програм зі стартового меню для всіх користувачів, папкуВибіркова автозавантаження і помістимо туди ярлики для потрібних додатків (рис. 11.17) ).

Після цього ярлики із звичайної папкиАвтозавантаження потрібно прибрати. Розглянемо алгоритм роботи сценарію входу Logon.js.

Спочатку потрібно визначити шлях до папки вибіркового автозавантаження (змінна PathStartup). Для цього ми скористаємося об'єктом WshSpecialFolders :

//Створюємо об'єкт WshShell WshShell=WScript.CreateObject("Wscript.Shell"); //Створюємо об'єкт WshSpecialFolders WshFldrs=WshShell.SpecialFolders; //Визначаємо шлях до папки вибіркового автозавантаження PathStartup=WshFldrs.item("AllUsersStartMenu")+"Вибіркове автозавантаження";

інтерактивний

Мал. 11.17. Нова папкаВибіркове автозавантаження

Знаючи шлях до потрібної папки, ми формуємо колекцію всіх файлів, що знаходяться в ній (змінна Files):

//Створюємо об'єкт FileSystemObject FSO=WScript.CreateObject("Scripting.FileSystemObject"); //Створюємо об'єкт Folder для папки вибіркового автозавантаження Folder=FSO.GetFolder(PathStartup); //Створюємо колекцію файлів каталогу вибіркового автозавантаження Files=new Enumerator(Folder.Files);

Після цього ми виводимо на екран діалогове вікно із запитанням, чи потрібно запустити програми з папки автозавантаження пакетному режимі, тобто. все одразу (рис. 11.18).

Мал. 11.18. Вибір режиму автозавантаження програм (пакетний або інтерактивний)

Залежно від натиснутої в діалоговому вікні кнопки ми присвоюємо логічне значення змінної IsRunAll , що визначає режим автозавантаження програм (якщо IsRunAll дорівнює false , то кожної програми буде видаватися запит на її запуск, інакше всі програми запускаються без попередження):

//Виводимо запит на запуск одразу всіх програм 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-послідовності ".