Роман клименко - недокументовані і маловідомі можливості windows xp - стор 2

Роман клименко - недокументовані і маловідомі можливості windows xp - стор 2

Мал. 1.1. Вікно з інформаційними відомостями про операційну систему

Якщо регістр, в якому ви вводите команду, для назви параметрів функції і бібліотек не важливий, то для назви функції слід уважно стежити за його написанням як з точки зору помилок, так і з точки зору регістра кожного окремого символу, інакше програма rundll32.exe НЕ зможе знайти необхідну вам функцію. Наприклад, якщо ви замість назви функції ShellAboutA введете назву ShellaboutA, то rundll32.exe виведе повідомлення про неможливість виклику функції, так як її немає у відповідній бібліотеці.

З кількох попередніх абзаців ви дізналися практично всі теоретичні викладки, які необхідні для роботи з програмою rundll32.exe. Зараз же будуть перераховані ті можливості, які має ця програма може надати користувачеві. Почнемо з опису функцій CPL-файлів.

Перед тим як будуть розглянуті різні функції, які можуть виконуватися за допомогою програми rundll32.exe, хотілося б уточнити спосіб записи деяких функцій. Трохи вище розглянута команда, яка виконує функцію ShellAboutA. Як можна помітити, ця функція закінчується якимось абсолютно непотрібним символом - A. Він говорить системі про те, що функція використовує для своєї роботи символи кодування ASCII (використання одного байта для представлення одного символу). Існує ще один символ, яким може закінчуватися функція - символ W. Він говорить системі про те, що функція використовує для своєї роботи символи в кодуванні Unicode (для представлення одного символу використовуються два байти). Так ось, ці символи зовсім не обов'язкові (хоча в дуже рідкісних випадках вони необхідні) - якщо ви введете назву функції без останнього символу (А або W), то система сама спробує визначити, яка кодування повинна використовуватися.

Хоча раніше говорилося, що програма rundll32.exe може викликати функції бібліотек, насправді її можливості набагато більші - вона може викликати функцію звідусіль, де вона вказана, будь то бібліотека, CPL-файли або сам виконуваний файл програми.

CPL-файл - це спеціальний файл (їх ще називають апплетами), який є діалоговим вікном, яке викликається за допомогою Панелі управління і призначений для настройки якогось окремого компонента операційної системи. Більшу частину посилань на CPL-файли можна зустріти в папці Панель управління, яку можна відкрити або за допомогою меню Пуск, або за допомогою виклику команди control або команди shell: ControlPanelFolder. Але операційна система Windows дозволяє викликати CPL-файли і за допомогою введення їх назви у вікні Запуск програми (в цьому випадку розширення CPL вказувати обов'язково).

В контексті даної книги вміст СPL-файлів розглядатися не буде, передбачається, що Новомосковсктель вже користувався ними. Винятком можуть бути тільки ті випадки, коли відповідна команда rundll32.exe залежить від установки тих чи інших параметрів, доступ до яких можна отримати з CPL-файлу.

Access.cpl

Аплет призначений для редагування різних спеціальних параметрів настройки клавіатури, звуку, миші або оболонки Windows. Всі ці параметри розроблялися програмістами Microsoft спеціально для людей з обмеженими фізичними можливостями, хоча деякі з представлених в апплете параметрів можуть бути корисні і в повсякденній роботі всіх користувачів операційної системи Windows XP.

Щоб викликати даний аплет за допомогою програми rundll32.exe, необхідно використовувати команду rundll32 Access.cpl, DebugMain. Ось, в принципі, і всі команди, які підтримує аплет access.cpl.

Appwiz.cpl

Ця команда відкриває діалогове вікно Установка і видалення програм. З його допомогою можна як видаляти або змінювати складову різних встановлених в системі програм, так і замінювати складові компоненти самої операційної системи.

На відміну від розглянутого раніше аплету access.cpl, аплет appwiz.cpl не дозволяє викликати себе за допомогою команди програми rundll32.exe. Зате він дає можливість виконати деякі дії, іншими способами не виконує. Але перед тим як розглянути можливі дії, які дозволяє виконати аплет appwiz.cpl, скажемо кілька слів про роботу самого аплету - це допоможе нам в розумінні роботи розглянутих далі команд.

Як уже сказано, аплет appwiz.cpl містить список всіх встановлених в системі додатків - для його відображення застосовується список Встановлені програми (рис. 1.2). Але як формується даний список? Можна подумати, що це відбувається при кожному запуску аплета appwiz.cpl шляхом сканування файлової системи Windows, але все набагато простіше. Насправді даний список розташований в реєстрі Windows. Для його зберігання використовується гілка HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall, що включає набір розділів, кожен з яких визначає один елемент списку Встановлені програми. Назви цих розділів ідентифікують встановлену програму для аплету appwiz.cpl, але при цьому не використовуються в списку Встановлені програми. Для вказівки назви елемента в списку застосовується строковий параметр DisplayName, розташований в кожному з розділів даної галузі (див. Рис. 1.2).

Роман клименко - недокументовані і маловідомі можливості windows xp - стор 2

Мал. 1.2. Формування списку Встановлені програми аплету appwiz.cpl

Тут не буде повністю розказано про параметри розділів гілки реєстру Windows HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall - це не є головною темою книги. Тому Новомосковсктелям, яким цікава ця тема, рекомендується придбати додаткову книгу, присвячену тільки їй. Ми ж зараз займаємося тим, для чого і був затіяний розповідь про спосіб зберігання списку встановлених програм апплетом appwiz.cpl, - описом команди rundll32.exe, за допомогою якої можна видалити програму, зазначену в даному списку.

rundll32 appwiz.cpl, WOW64Uninstall_RunDLL. "Назва розділу в галузі реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall, що ідентифікує програму"

Наприклад, якщо ви хочете видалити програму EVEREST Professional v1.50, розділ якої в даній галузі названий EVEREST Professional_is1 (рис. 1.3), то необхідно використовувати наступну команду:

rundll32 appwiz.cpl, WOW64Uninstall_RunDLL. EVEREST Professional_is1

Після її виклику запуститься команда видалення, яка записана в параметрі строкового типу UninstallString розділу гілки реєстру EVEREST Professional_is1 (рис. 1.3).

Роман клименко - недокументовані і маловідомі можливості windows xp - стор 2

Мал. 1.З. Розділ видаляється програми названий EVEREST professional_is1

Але, крім видалення програм, аплет appwiz.cpl дозволяє виконувати деякі інші цікаві команди, які використовуються оболонкою Windows. Першою з них є команда rundll32 appwiz.cpl, ConfigStartMenu, що дозволяє очистити вміст вашого меню Пуск. Після її виклику перед вами з'явиться діалог, відображений на рис. 1.4. За допомогою цього діалогу можна видалити ті з елементів меню Пуск, які знаходяться в папці% userprofile% \ Головне меню (такі папки, як Адміністрування, Стандартні або Автозавантаження видалити не можна).

Інший командою, яку можна викликати завдяки аплету appwiz.cpl, є команда rundll32 appwiz.cpl, NewLinkHere "шлях до кaтaлогу". З її допомогою можна створити ярлик в каталозі, який ви вкажете. Для цього буде викликаний спеціальний майстер створення ярликів. Доступ до нього можна також отримати зі списку Створити контекстного меню Робочого столу або папки, якщо вибрати в цьому списку команду Ярлик.