Секрети windows статті про реєстр, програмах книга реєстр windows vista

Секрети Windows: статті про реєстр, rundll32.exe, програмах Книга Реєстр Windows Vista. INF-файли

Книга "Реєстр Windows Vista. На 100%", Глава 1. Основні відомості про реєстр, 1.3. Мови сценаріїв і реєстр: INF-файли.

На сторінках цієї книжки ми з вами не будемо вдаватися в тонкощі програмування на описуваних сценаріях - єдине, що нас цікавить, це їх можливості роботи з реєстром.

Файли з розширенням .inf представляють собою звичайні текстові файли, які можуть містити в собі спеціальні команди по роботі з реєстром, файлової системою, службами та іншими компонентами операційної системи Windows Vista. Як правило, використовуються inf-файли для установки додаткового обладнання або програмного забезпечення.

Дані файли не є нововведенням операційної системи Windows Vista - вони були доступні ще в Windows 95. Починаючи ж з Windows 98 можливості inf-файлів були істотно розширені додаткової бібліотекою advapi32.dll. При цьому сценарії, які використовують у своїй роботі бібліотеку advapi32.dll (її можна підключати до сценарію чи ні), називаються розширеними inf-файлами.

З тих пір функціональність inf-файлів практично не змінювалася.

За допомогою inf-файлів ви можете виконати наступні дії з реєстром: додавання, видалення і редагування параметрів реєстру, а також редагування стану окремих бітів параметра. Для цього використовуються окремі ключові слова AddReg, DelReg, BitReg.

Основний синтаксис inf-файлів

Перед тим, як описувати ключові слова, за допомогою яких можна працювати з реєстром, давайте все-таки коротко зупинимося на основному синтаксисі звичайного inf-файлу (тобто, не розширеного).

Перш за все зверніть увагу на лістинг 2.02. Даний лістинг містить в собі шаблон самого простого inf-файлу.

Що таке файли .inf складаються з ключових слів, розділів і команд.

Системні і призначені для користувача розділи

Розділи можуть бути призначені для користувача, назви яких можуть бути будь-якими, і системними, назви яких строго визначені. Наприклад, у файлі, наведеному на лістингу 2.01, системними є розділи Version і DefaultInstall.

Version Розділ version є обов'язковою частиною будь-якого inf-файлу. Як мінімум, він повинен містити в собі одне ключове слово - Signature. За допомогою цього ключового слова визначається версія операційної системи, для якої був створений даний inf-файл.

Наприклад, якщо inf-файл створений для операційних систем сімейства Windows 9x (як правило, такі inf-файли підтримують всі операційні системи Windows, незалежно від сімейства, до якого вони належать), тоді значенням даного ключового слова повинна бути рядок $ CHICAGO $. Якщо ж файл створений для операційних систем сімейства Windows NT, тоді значенням даного ключового слова повинна бути рядок $ Windows NT $.

DefaultInstall Ще одним обов'язковим розділом inf-файлу є розділ DefaultInstall. Даний розділ є першим розділом inf-файлу, який почне обробляти операційна система. Саме в цьому розділі повинні описуватися всі необхідні ключові слова.

Ключові слова

Як правило, ключові слова представляють собою спеціальні рядки, які вказують на призначені для користувача розділи inf-файлу. Залежно від назви ключового слова, вміст відповідного призначеного для користувача розділу може трактуватися по різному.

Способи запуску inf-файлів

Основний синтаксис inf-файлів ми з вами розібрали. Але перед тим, як почати опис спеціалізованих ключових слів, слід додатково розглянути спосіб запуску inf-файлів.

Запуск за допомогою оболонки Найпростішим способом запуску inf-файлу, є відображення його контекстного меню і вибір команди ВСТАНОВИТИ. Після того, як ви це зробите, запуститися програма InfDefaultInstall.exe.

Програма InfDefaultInstall.exe є нововведенням операційної системи Windows Vista. Дана програма є лише оболонкою, яка запускає команду rundll32.exe setupapi, InstallHinfSection DefaultInstall 132 «шлях до inf-файлу».

Використання команди rundll32.exe Запустити inf-файл ви можете і самостійно - за допомогою команди rundll32.exe setupapi, InstallHinfSection «початковий розділ» «прапори» «шлях до inf-файлу». Саме цю команду використовує програма InfDefaultInstall.exe.

  • Початковий розділ. Визначає розділ inf-файлу, який містить в собі ключові слова. При використанні програми InfDefaultInstall.exe таким розділом завжди повинен бути розділ DefaultInstall. Якщо ж ви запускаєте inf-файл за допомогою команди rundll32.exe, ви самостійно можете вказати початковий розділ.
  • Прапори. Прапори дозволяють вказати дії, які відбудуться після установки inf-файлу. Існують наступні прапори.
    • 128. Після установки inf-файлу комп'ютер перезавантажувати не потрібно.
    • 129. Після установки inf-файлу виконати перезавантаження комп'ютера.
    • 130. Після установки inf-файлу запитати у користувача про перезавантаження комп'ютера.
    • 131. Якщо операційна система визначила необхідність перезавантаження комп'ютера, виконати її.
    • 132. Якщо операційна система визначила необхідність перезавантаження комп'ютера, запитати перед перезавантаженням у користувача.
  • Шлях до inf-файлу. Визначає шлях до inf-файлу, який потрібно встановити, і його ім'я.

Запуск розширених inf-файлів Якщо ж ви створили розширений inf-файл, тоді стандартний спосіб установки inf-файлів вам не підійде. Для установки розширеного inf-файлу необхідно використовувати команду rundll32.exe ADVPACK.dll, LaunchINFSectionEx «ім'я inf-файлу», «початковий розділ», «ім'я cab-файлу», «прапор». Такі частини даної команди, як ім'я inf-файлу і початковий розділ нам вже знайомі по команді rundll32.exe для установки звичайних inf-файлів. Решта ж частини команди ми розглянемо нижче.

Під Твіко користувачі операційної системи Windows розуміють різні прийоми зміни параметрів реєстру, за допомогою яких активується якась додаткова функція Windows, або в кращу сторону змінюється поведінка самої операційної системи.

Як було сказано вище, єдиним способом установки розширеного inf-файлу є використання команди rundll32.exe. Однак, якщо ви досить часто працюєте з такими inf-файлами, це може здатися вам незручним. В цьому випадку можна створити в контекстному меню inf-файлів додаткову команду для їх установки в розширеному режимі. Для цього досить привласнити параметру (за замовчуванням) гілки реєстру HKCR \ inffile \ shell \ extended install \ command значення rundll32.exe ADVPACK.dll, LaunchINFSectionEx% 1, DefaultInstall. Після цього в контекстному меню inf-файлів з'явиться нова команда extended install.

Наприклад, вищеописаний Твік можна виконати за допомогою простого reg-файлу, наведеного на лістингу 2.03.

Внесення змін до реєстру

Для редагування параметрів і розділів реєстру за допомогою inf-файлів застосовується ключове слово AddReg.

Дане ключове слово вказує на розділи inf-файлу (якщо необхідно вказати кілька розділів, просто перерахуйте їх через кому), які містять в собі опис редагованих параметрів реєстру. Розділи, які описуються даними ключовим словом, обробляються послідовно. Дані розділи мають наступний формат (лістинг 2.04).

Кореневий розділ Дана частина рядка визначає кореневий розділ реєстру, в якому розташований змінюваний параметр.

При цьому замість назви кореневих розділів потрібно вказувати вже знайомі нам по програмі reg.exe позначення HKCU, HKLM, HKU, HKCR (замінює кореневий розділ HKEY_CLASSES_ROOT), HKCC (замінює кореневий розділ HKEY_CURRENT_CONFIG), HKR (замінює гілка реєстру HKLM \ SYSTEM \ CurrentControlSet \ Control \ Class \\ «номер пристрою» і використовується при установці нового обладнання).

Гілка реєстру Дана частина рядка визначає решту шляху до гілки реєстру, в якій розташований змінюваний параметр. Якщо гілка реєстру містить прогалини, її потрібно взяти в лапки.

Параметр Дана частина рядка містить назву параметра, значення якого змінюється. Якщо назва параметра містить прогалини, його потрібно взяти в лапки.

У тому випадку, якщо вам потрібно змінити значення параметра (за замовчуванням) даної гілки реєстру, просто нічого не вказуйте в даній частині рядка, залишивши її порожній.

Прапор типу параметра В першу чергу за допомогою прапора типу параметра вказується тип змінного параметра. Крім того, за допомогою даного прапора можна вказати додаткові відомості про зміну параметра.

Прапор типу параметра є бітову маску, призначення бітів якої описано нижче.

Даний прапор може використовуватися тільки для параметрів типу REG_MULTI_SZ.

  • 0х00000010. Замість того, щоб створити або змінити значення параметра, виконати створення тільки зазначеного розділу реєстру.
  • 0х00000020. Змінити значення параметра дозволено тільки в тому випадку, якщо цей параметр уже існує в реєстрі.
  • Значення параметра Дана частина рядка містить нове значення змінюваного або додається параметра.

    підводимо підсумки

    Давайте узагальнимо всі можливості, які надає нам ключове слово AddReg.

    Щоб створити параметр або відредагувати його значення, потрібно скористатися рядком виду «кореневий розділ», «гілка реєстру», «назва параметра», «прапор», «значення параметра». Додаючи до прапора відповідні бітові маски, також можна визначити, чи буде виконуватися зміна значення параметра, якщо він вже присутній в реєстрі (або якщо він відсутній в реєстрі).

    Щоб додати рядок до значення параметра REG_MULTI_SZ типу, потрібно скористатися рядком виду «кореневий розділ», «гілка реєстру», «назва параметра», 0x00010008, «значення параметра».

    Щоб видалити параметр з реєстру, потрібно скористатися рядком виду «кореневий розділ», «гілка реєстру», «назва параметра», 0x00000004.

    Щоб створити гілку реєстру, потрібно скористатися рядком виду «кореневий розділ», «гілка реєстру» ,, 0х00000010.

    Як приклад давайте розглянемо простий inf-файл (лістинг 2.05), який відключає можливість автоматичного запуску вставлених в привід компакт-дисків. Для цього він привласнює параметру REG_DWORD типу Autorun значення 0.

    Крім того, даний inf-файл також додає до значення параметра типу REG_MULTI_SZ AutoRunAlwaysDisable назви приводів, автоматичний запуск компакт дисків на яких заборонено в будь-якому випадку.

    Видалення параметрів і розділів реєстру

    Незважаючи на те, що видалити параметр реєстру можна і за допомогою ключового слова AddReg, спеціально для цієї операції також створено нове для нас ключове слово DelReg.

    Як і розглянуте нами ключове слово AddReg, ключове слово DelReg вказує на призначений для користувача розділ inf-файлу. Тільки тепер розділ буде містити відомості про гілки або параметрі, які потрібно видалити з реєстру. Формат рядків даного розділу наступний: «кореневий розділ реєстру», «гілка реєстру», «параметр», «прапор операції видалення», «приклад для видалення».

    Призначення таких частин рядка, як кореневий розділ, гілка реєстру і параметр нам вже відомо з опису ключового слів AddReg. Решта ж частини рядки ми з вами зараз розглянемо.

    Прапор операції видалення Існують наступні прапори операції видалення.

    Приклад для видалення Дана частина рядка застосовується тільки при видаленні параметра типу REG_MULTI_SZ (бітова маска прапора 0х00018002) і визначає частину значення параметра, яка буде виключена з параметра.

    Робота з бітової маскою

    Унікальною можливістю стандартних inf-файлів є реалізація можливості роботи з окремими бітами значення параметра реєстру. Для цього призначено ключове слово BitReg. Дане ключове слово вказує на призначені для користувача розділи, які можуть містити в собі рядки такого формату: «кореневий розділ реєстру», «гілка реєстру», «параметр», «прапор операції», «маска операції», «номер байта параметра».

    Після знайомства з ключовими словами AddReg і DelReg нам невідомі тільки такі частини рядків даного формату.

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

    • 0х00000000. Скинути вказаний біт.
    • 0х00000001. Встановити вказаний біт.
    • 0х00040000. Здійснити зазначені зміни в 32-розрядному реєстрі, а не в 64-розрядному. Дана бітова маска може застосовуватися в 64-розрядних операційних системах.

    Маска операції Дана частина рядка дозволяє вказати біти одного байта значення параметра (відразу можна редагувати тільки біти одного з байтів параметра), над якими потрібно провести операцію, визначену прапором операції (скинути або встановити параметри).

    Маска операції повинна складатися з 8 цифр - або одиниць, або нулів. Всі біти відповідного байта параметра, на місці яких в масці операції вказана одиниця, будуть скинуті або встановлені (в залежності від значення прапора операції).

    Номер байта в значенні параметра Оскільки за допомогою одного рядка inf-файлу можна відредагувати тільки біти одного з байтів значення параметра, дане поле вказує байт параметра, до якого буде застосовуватися маска операції.

    Зауважте, що початок нумерації байтів значення параметра залежить від типу параметра. Якщо редагується значення параметра типу REG_DWORD, найстарший (тобто, самий правий) байт даного параметра має номер 0. Якщо ж редагується значення параметра типу REG_BINARY, тоді наймолодший байт значення параметра (самий лівий) має номер 0.

    Рейтинг: 0
    Оцініть 1 2 3 4 5

    Схожі статті