Секрети windows статті про реєстр, програмах книга недокументовані можливості windows xp,
Книга "Недокументовані можливості Windows XP. Бібліотека користувача", Глава 1. Rundll32.exe, Частина 1.
Rundll32.exe, це невелика програма, яку поставляють з усіма версіями Windows. Ця програма була написана самими програмістами Microsoft для своїх потреб і здатна виконувати будь-яку Wind32 API функцію, описану в бібліотеці, як ніби ця функція викликається з програми або є повноцінною програмою. Програма rundll32.exe створювалася для виклику різних функцій з файлів скриптів або INF-файлів і з її допомогою можна виконати дуже багато цікавих або корисних трюків, описом яких ми і займемося в цьому розділі.
Перед описом команд, доступних при роботі з rundll32.exe, хотілося б ще звузити рамки функцій, які необхідно розуміти під «будь-якими» функціями, які можна виконати за допомогою даної програми. Незважаючи на те, що програма rundll32.exe способу виконувати будь-які функції, не всі функції зможуть бути виконані - вся справа в тому, що деякі з функцій можуть очікувати якихось спеціальних параметрів, які не є статичними, і одержуваних за допомогою інших функцій. Ще гірша ситуація може обстоять в тому випадку, коли функція не приймає ніяких параметрів, але при своїй роботі використовує вміст регістрів або пам'яті комп'ютера. У цей випадку виклик даної функції може бути подібний до грі в кості - якщо вам пощастить і всі необхідні даної функції параметри виявляться коректними, тоді вона зможе виконатися.
Синтаксис програми rundll32.exe досить простий: rundll32.exe «шлях до бібліотеки і її ім'я», «ім'я функції в даній бібліотеці» «список необхідних їй параметрів через кому». Але як же можна викликати дану програму? Крім використання виклику в коді скрипта, про що буде розказано в наступних розділах книги, дану програму можна викликати і за допомогою звичайного діалогу ВИКОНАТИ (або в поле команди при створенні ярлика). Наприклад, введіть в діалозі ВИКОНАТИ команду rundll32.exe shell32.dll, ShellAboutA і ви зможете побачити діалог, подібний до наведеного на малюнку 1.
Малюнок 1 Давайте почнемо цю книгу зі знайомства зі своєю операційною системою
Увага Якщо для назви параметрів функції і бібліотек, регістр, в якому ви вводите команду, не важливий, то для назви функції слід уважно стежити за написанням функції як з точки зору помилок, так і з точки зору регістра кожного окремого символу, інакше програма rundll32. exe не зможе знайти необхідну вам функцію. Наприклад, якщо ви замість назви функції ShellAboutA введете назву ShellaboutA, тоді rundll32.exe виведе повідомлення про неможливість виклику функції, так як її немає у відповідній бібліотеці.
З кількох попередніх абзаців ви дізналися практично всі теоретичні викладки, які необхідні для роботи з програмою Rundll32.exe. Зараз же давайте почнемо перерахування тих можливостей, які має ця програма може надати користувачеві. І почнемо ми з опису функцій CPL-файлів.
Примітка Перед тим, як ми почнемо розгляд різних функцій, які можуть виконуватися за допомогою програми rundll32.exe, хотілося б ще уточнити спосіб записи деяких функцій. Трохи вище ми розглянули команду, що виконує функцію ShellAboutA. Як можна помітити, ця функція закінчується на якийсь, абсолютно не потрібний символ - A. Цей символ говорить системі про те, що дана функція використовує для своєї роботи символи кодування ASCII (використання одного байта для представлення одного символу). Також існує ще один символ, на який може закінчуватися функція - символ W. Він говорить системі про те, що дана функція використовує для своєї роботи символи в кодуванні Unicode (для представлення одного символу використовується два байта). Так ось, ці символи зовсім не обов'язкові (хоча в дуже рідкісних випадках вони необхідні) - якщо ви введете назву функції без останнього символу (A або W), тоді система сама спробує визначити, яка кодування повинна використовуватися.
Незважаючи на те, що раніше говорилося, що програма rundll32.exe може викликати функції бібліотек, насправді її можливості набагато більші - вона може викликати функцію звідусіль, де вона вказана, будь то бібліотека, CPL-файли або сам виконуваний файл програми.
CPL-файл, це спеціальний файл (їх ще називають апплетами), який є діалоговим вікном, яке викликається за допомогою ПАНЕЛІ КЕРУВАННЯ і призначене для налаштування якогось окремого компонента операційної системи. Більшу частину посилань на cpl-файли можна зустріти в папці ПАНЕЛЬ УПРАВЛІННЯ, яку можна відкрити або за допомогою меню ПУСК, або за допомогою виклику команди control, або за допомогою виклику команди shell: ControlPanelFolder. Але крім виклику панелі управління операційна система Windows дозволяє викликати CPL-файли за допомогою введення їх назви в діалозі ВИКОНАТИ (в цьому випадку розширення .cpl вказувати обов'язково).
В контексті даної книги ми не будемо розглядати вміст CPL-файлів, передбачається, що Новомосковсктель вже користувався ними. Винятком можуть бути тільки ті випадки, коли відповідна команда rundll32.exe залежить від установки тих чи інших параметрів, доступ до яких можна отримати з cpl-файлу.
Access.cpl Даний аплет призначений для редагування різних спеціальних параметрів настройки клавіатури, звуку, миші або оболонки Windows. Всі ці параметри розроблялися програмістами Microsoft спеціально для людей з обмеженими можливостями, хоча деякі з представлених в апплете параметрів можуть бути корисні і в повсякденній роботі всіх користувачів операційної системи Windows XP.
Щоб викликати даний аплет за допомогою програми rundll32.exe, необхідно використовувати команду rundll32.exe Access.cpl, DebugMain. Ось, в принципі, і всі команди, які підтримує аплет access.cpl.
Appwiz.cpl Команда, ім'ям якої названо даний підрозділ книги, відкриває діалогове вікно ВСТАНОВЛЕННЯ / ВИДАЛЕННЯ ПРОГРАМ. За допомогою даного діалогового вікна можна як видаляти або змінювати складову різних встановлених в системі програм, так і замінювати складові компоненти самої операційної системи.
Примітка Але не всі компоненти операційної системи можна видалити за допомогою даного діалогового вікна. Деякі з компонентів перед видаленням вимагають додаткових дій (наприклад, видалення стандартних ігор операційної системи Сапер і Косинка), про які буде розказано в додатку до цієї книги.
На відміну від розглянутого нами раніше аплету access.cpl, аплет appwiz.cpl не дозволяє викликати себе за допомогою команди програми rundll32.exe. Але зате він дозволяє виконати деякі інші дії, які іншими способами виконати не можна. Але перед тим, як розглянути можливі дії, які дозволяє виконати аплет appwiz.cpl, давайте кілька слів скажемо про роботу самого аплету - це допоможе нам в розумінні самої роботи розглянутих нами нижче команд.
Отже, аплет appwiz.cpl. Як ми вже сказали, даний аплет містить в собі список всіх встановлених в системі програм - для відображення цього списку програм застосовується список ВСТАНОВЛЕНІ ПРОГРАМИ (Ріс.1.02). Але як формується даний список? Можна подумати, що даний список формується при кожному запуску аплета appwiz.cpl шляхом сканування файлової системи Windows, але насправді все набагато простіше. Насправді даний список розташований в реєстрі Windows. Для зберігання даного списку використовується гілка реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ WINDOWS \ CURRENTVERSION \ UNINSTALL, що містить в собі набір підрозділів, кожен з яких визначає один елемент списку ВСТАНОВЛЕНІ ПРОГРАМИ. Назви цих підрозділів ідентифікують встановлену програму для аплету appwiz.cpl, але при цьому не використовуються в списку ВСТАНОВЛЕНІ ПРОГРАМИ. Для вказівки назви елемента в списку, застосовується строкової параметр DISPLAYNAME, розташований в кожному з підрозділів розглянутої нами гілки (Рис.2).
Малюнок 2 Формування списку Встановлені програми аплету appwiz.cpl
Ми не будемо повністю розповідати про параметри підрозділів гілки реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ WINDOWS \ CURRENTVERSION \ UNINSTALL - це не є головною темою книги. Тому тим, кому цікава дана тема, рекомендується придбати додаткову книгу, присвячену тільки їй. Ми ж зараз займаємося тим, для чого і був затіяний розповідь про спосіб зберігання списку встановлених програм апплетом appwiz.cpl - описом команди rundll32.exe, за допомогою якої можна видалити програму, зазначену в даному списку.
Малюнок 3 Підрозділ видаляється нами програми названий EVEREST PROFESSIONAL_IS1
Після виклику даної команди запуститься команда видалення, яка записана в параметрі строкового типу UNINSTALLSTRING підрозділу нашої галузі реєстру EVEREST PROFESSIONAL_IS1 (Рис.3). Але крім видалення програм, аплет appwiz.cpl дозволяє виконати деякі інші цікаві команди, які використовуються оболонкою Windows. Першою з таких команд є команда rundll32.exe appwiz.cpl, ConfigStartMenu, що дозволяє очистити вміст вашого меню ПУСК. Після виклику даної команди перед вами з'явиться діалог, відображений на малюнку 4. За допомогою цього діалогу можна видалити ті з елементів списку меню ПУСК, які знаходяться в папці% userprofile% \ Головне меню (Такі папки, як АДМІНІСТРУВАННЯ, СТАНДАРТНІ або автозавантаження видалити не можна) .
Малюнок 4 Результат виконання команди rundll32.exe appwiz.cpl, ConfigStartMenu
Інший командою, яку можна викликати завдяки аплету appwiz.cpl, є команда rundll32.exe appwiz.cpl, NewLinkHere «шлях до катологу». За допомогою цієї команди можна створити ярлик в каталозі, який ви вкажете. Для цього буде викликаний спеціальний майстер створення ярликів. Також доступ до цього майстра можна отримати зі списку СТВОРИТИ контекстного меню робочого столу або папки, якщо вибрати в цьому списку команду ЯРЛИК.
Bthprops.cpl BTHPROPS.CPL - це аплет, призначений для налаштування роботи і взаємодії пристроїв, що підключаються за допомогою бездротового з'єднання Bluetooth. За замовчуванням, якщо в системі не встановлено (або не зареєстровано) жодного пристрою, що працює за допомогою Bluetooth, то аплет BTHPROPS.CPL і всі параметри їм параметри недоступні. Якщо ж ви хочете подивитися на те, що це за аплет, тоді можна спробувати скористатися деякими командами rundll32, що використовують файл аплету для своєї роботи. На жаль, за допомогою таких команд не можна викликати самого вікна аплету, але зате можна скористатися деякими з функцій, які воно надає. Наприклад, можна викликати агента підключень Bluetooth, за допомогою якого можна підключити пристрій Bluetooth, передати або відправити файли, а також налаштувати конфігурацію вже підключених пристроїв Bluetooth. Для цього необхідно виконати кілька дій. По-перше, необхідно привласнити параметру DWORrundll32.exe D типу NOTIFICATION AREA ICON, розташованому в галузі реєстру HKEY_CURRENT_USER \ CONTROL PANEL \ BLUETOOTH, значення, рівне 1. Це необхідно для того, щоб ми могли взаємодіяти з агентом підключень за допомогою його іконки, яка відображається в треї. А по-друге, необхідно скористатися командою rundll32.exe для запуску агента: rundll32 bthprops.cpl. BluetoothAuthenticationAgent. Після введення даної команди в треї з'явиться іконка, подібна зображеної на малюнку 5.
Малюнок 5 Виклик команди rundll32.exe bthprops.cpl. BluetoothAuthenticationAgent
Після закриття агента підключень значення параметра Notification Area Icon автоматично стає рівним 0.
Малюнок 6 Виклик команди rundll32.exe bthprops.cpl. BluetoothDisplayDeviceProperties
Аналогічні команди можна застосувати і для аплету irprops.cpl. В цьому випадку потрібно в команді rundll32.exe замість аплету bthprops.cpl вказати аплет irprops.cpl. Незважаючи на те, що використовується два різних аплету, результат команд буде один і той же.