Реєстр Windows 95, Windows, Операційні системи, статті

Баррі Саймон, (С) СК Прес
PC Magazine

Дана стаття являє собою компіляцію трьох статей, які опубліковані в журналі PC Magazine в 1995-1996 рр.. (24 жовтня, 7 листопада та 9 січня відповідно). У перекладі використовується термінологія, прийнята фірмою Microsoft для російської версії Windows 95, яка вийшла у світ 10 листопада 1995 Компіляція виконана Михайлом Коллегановим.

Єдина база даних замінює численні конфігураційні файли Windows 3.x.


Спочатку середу Windows зверталася лише до двох системним конфігураційним файлам – CONFIG.SYS і AUTOEXEC.BAT. У Windows 2.x до цих файлів додалися WIN.INI і SYSTEM.INI, а потім число конфігураційних файлів стало майже безконтрольно рости в міру появи реєстраційної бази OLE, файлу PROTOCOL.INI в системі Windows for Workgroups і безлічі INI-файлів для прикладних пакетів. Система Windows 95 може зчитувати ці конфігураційні файли, щоб забезпечувати сумісність зверху вниз, але їх численні обов’язки тепер покладені на двійковий об’єкт, званий реєстром (Registry).


Хоча реєстр все ще поділений на декілька файлів, редактор реєстру Windows 95 (Registry Editor) звертається до нього як до єдиного цілого. Така особливість – довгоочікуваний перехід від колекції різних ASCII-файлів в Windows 3.x, але реєстр влаштований набагато складніше, ніж його ASCII-побратими. Замість зберігання інформації про настановних параметрах у формі послідовного списку в Windows 95 використовується ієрархічна деревоподібна структура, яка замінює прості записи в INI-файлі складними іменами типу My
Computer\HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-
A2D8-08002B30309D}\DefaultIcon.


Недостатня повнота документації, що надається компанією Microsoft, ще більш ускладнює ситуацію. В комплекті Windows 3.1 Resource Kit було понад 70 стор, присвячених INI-файлів. Хоча ці сторінки містили кілька помилок (там вказувалися обмеження Windows 3.0, які були усунені вже в Windows 3.1), вони були воістину безцінні для вдумливих користувачів Windows. Навпаки, в Windows 95 Resource Kit реєстру документований на 25 менших за обсягом сторінках, які “розбавлені” малюнками та зауваженнями загального характеру. Компанія Microsoft тим самим поступово переходить від погано документованої системи середньої складності до системи, яка більш ніж складна і практично недокументірованна.


Хоча багато параметрів реєстру можна змінити за допомогою діалогових вікон “Провідника” (Explorer), “Панелі управління” (Control) або інших програмних коштів оболонки, часто доводиться редагувати реєстр безпосередньо. Для полегшення виконання цього процесу в цій статті ми опишемо реєстр і його редактор, а потім послідовно виконаємо ряд дій з налаштування системи.

Редактор реєстру

Редактор Registry Editor – це працює в двох режимах програма, яка може викликатися із середовища Windows або з командного рядка реального режиму DOS. Система Windows 95 автоматично інсталює “Редактор реєстру” в папку Windows, але не поміщає її системну абревіатуру (shortcut, в термінології Microsoft “ярлик”) в меню “Пуск” (Start) або на “Робочий стіл” (Desktop). Для прискореного доступу до цього редактору необхідно сформувати абревіатуру самостійно або просто набрати regedit.exe в діалоговому вікні “Виконати” (Run).


Коли ви запускаєте редактор із середовища Windows, він виводиться у вікні з декількома панелями, що нагадує інтерфейс “Провідника”: деревоподібна структура розділів (Keys) реєстру (аналог папок для файлів) відображається ліворуч, а вміст індивідуальних елементів – справа. При першому запуску редактора реєстру, в його вікні відображаються шість кореневих (root) розділів, а все інші вкладені всередину цих шести. Кожен розділ містить різноманітні підрозділи – аналоги підкаталогів – і параметри або поля значень (value entries) – аналоги файлів. Параметр складається з трьох частин: ім’я, тип даних – dword (подвійне слово), binary (Двійковий) або рядок ASCII символів – і самі дані (Їх розмір може досягати 64 Кбайт). Кожен розділ містить рядковий параметр, що має ім’я “За замовчуванням” (Default), яке зазвичай (але не завжди) ідентифікує його призначення.


У правій половині екрану відображаються значення “По умовчанням “, строковий параметр MRUList і кілька двійкових параметрів (a, b, c, і т. д.). Через глибокої ієрархічної структури реєстру параметрам присвоюються надзвичайно довгі імена:

  My Computer\HKEY_CURRENT_USER\Software\Microsoft\
   Windows\CurrentVersion\Applets\Explorer\StreamMRU\ (За замовчуванням)

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


Оскільки при завантаженні відображаються тільки кореневі розділи, щоб дістатися до поля значення якого-небудь важливого підрозділу, доведеться багато разів клацнути мишкою. Можна застосовувати діалогове вікно “Знайти” (Find) для переходу до даного елементу, але виконання цього дії майже настільки ж повільно, як і розкриття дерева вручну (проте команда “Знайти” корисна, коли ви точно не знаєте, де шукати потрібний підрозділ).


Редактор реєстру не має настільки багатими можливостями як “Провідник”-Explorer, але його кошти редагування цілком інтуїтивно зрозумілі. Для зміни імен розділів або їх параметрів виберіть функцію “Перейменувати” (Rename) або з меню “Правка” (Edit), або з меню, яке викликається клацанням правою клавішею миші на розділі реєстру. Ці два меню також дозволяють створювати нові розділи і присвоювати їм значення. Для редагування конкретних даних реєстру просто двічі клацніть клавішею миші на імені параметра. З’явиться діалогове вікно, в яке виводяться шістнадцятковий потік двійкових даних і його ASCII-виставу. Ці дані реальні, і їх можна редагувати безпосередньо.

Файли User.dat і System.dat

Редактор Registry Editor представляє реєстр у вигляді єдиної бази даних, але насправді він складається з двох або більше файлів. Зазвичай цими двома файлами є C: \ Windows \ User.dat, в якому зберігаються дані, специфічні для конкретного користувача, і C: \ Windows \ System.dat, де містяться дані, специфічні для комп’ютера.


Такий розподіл дає можливість користувачам підключатися до кількох машин, що працюють в мережі. Наприклад, користувач X зазвичай входить в мережу з машини X з даними набором файлів реєстру. Оскільки ці файли взаємно доповнюють один одного, користувач X може також підключатися до мережевої машині Y зі своїм власним User.dat і System.dat машини Y. В результаті сукупність параметрів, характерна для користувача X, задасть такі елементи, як оформлення, а набір параметрів комп’ютера Y вкаже на драйвери жорсткого диска і інші елементи, специфічні для даного комп’ютера.


Та ж сама парадигма дозволяє конфігурувати один комп’ютер для кількох користувачів. Наприклад, щоб налаштувати домашній ПК для кількох членів сім’ї, викличте утиліту “Паролі” (Passwords) “Панелі управління “, клацніть на закладці” Конфігурації ” (User Profiles) і включите кнопку з фіксацією, яка позначена словами “Кожен користувач може мати свою систему налаштувань, обирану при вході в Windows ”
(“Users Can Customize Their Preferences and Desktop
Settings”).


Якщо новий користувач входить в систему і налаштовує інтерфейс, Windows 95 створює нову папку в каталозі C: ​​\ Windows \ Profiles, який містить копію User.dat і папок “Головне меню” (Start Menu) і “Робочий стіл “. У новий файл User.dat будуть внесені записи для нових папок “Головне меню” і “Робочий стіл”. Реєстр для цього нового користувача будується з нового блоку User.dat і System.dat.

Резервне копіювання реєстру і REG-файлів

Виправляти і вміст розділів, і значення параметрів легко, але, перш ніж це робити, завжди слід приймати ряд мінімальних запобіжних заходів. По-перше, створіть завантажувальну дискету, викликавши утиліту “Установка і видалення програм” (Add / Remove Programs) Панелі управління і клацнувши на закладці “Системний диск “(Startup Disk). Така операція дозволить запустити Windows 95 з гнучкого диска, якщо не вдасться зробити це з жорсткого диска. По-друге, створіть як двійкову, так і текстову резервні копії самого реєстру. Двійкову копію можна створити, скопіювавши User.dat і System.dat з папки Windows. Для отримання текстової резервної копії скористайтеся функцією експорту редактора реєстру.


Функції експорту та імпорту редактора дозволяють легко переносити файли реєстру, які представляють собою образ дерева реєстру у форматі ASCII. Файл реєстру має розширення REG і містить послідовний список значень параметрів:

   [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Faxcover.Document\DefaultIcon]
   @="C:\\Windows\\Faxcover.exe, 1"

Ця пропозиція ідентифікує конкретний параметр (У квадратних дужках) і призначає підрядок даних для його строкового значення, присвоюється за замовчуванням (@ означає “За замовчуванням”). У файлі Faxcover.exe зберігається кілька піктограм, які можуть бути призначені сторінкам, предваряющим факс-повідомлення. Наведена вище підрядок даних вказує, що система повинна використовувати другу піктограму з Faxcover.exe (як пояснюється нижче, “, 1” позначає другій піктограмі).


Для створення REG-файлу з деякої гілки реєстру просто виділіть відповідний розділ і виберіть пункт “Експорт файлу реєстру” (Export Registry File) з меню редактора реєстру. Команда “Імпорт файлу реєстру” (Import Registry File) виконує зворотну дію: після того як буде обраний конкретний розділ, вона вставить вміст REG-файлу в ту гілку дерева реєстру, яка обрана. Крім того, можна імпортувати інформацію про реєстр, просто двічі клацнувши мишею на імені REG-файлу або запустивши редактор реєстру з командного рядка DOS. Для імпорту файлу реєстру з командного рядка DOS наберіть ім’я исполнимого модуля редактора, а за ним назва файлу: Regedit Filename.reg. Запуск редактора з DOS може допомогти усунути помилки в реєстрі, які відключають Windows, або відновити розташування піктограм на “Робочому столі” (як це зробити, буде роз’яснено нижче).


Якщо ви збираєтеся експериментувати з гілкою реєстру, експортуйте її до внесення змін. В разі незворотною помилки можна буде імпортувати вихідні параметри і відновити працездатну конфігурацію. На той випадок, якщо ви забудете зробити резервну копію, пам’ятайте, що система Windows 95 після успішної початкового завантаження автоматично копіює реєстру в два резервних файлу (User.da0 і System.da0). Крім того, на компакт-диску Windows 95 є програма Cfgback.exe, яка дозволяє зберігати до дев’яти послідовних версій реєстру.

Дослідження реєстру

Щоб по-іншому поглянути на реєстр, експортуйте його в текстовий файл на своєму комп’ютері, внесіть зміни в настройку системи і повторіть експорт реєстру. Потім, за допомогою утиліти построчного порівняння файлів, знайдіть всі зміни, які система внесла в реєстр. Ми користувалися програмою Windows 3.1 Norton Deskedit, яка має потужну функцію порівняння файлів (Аналогічна функція в Windows 95 – Norton Navigator – з такими великими файлами не справляється). Крім того, для виявлення відмінностей можна застосувати функцію “Порівняння версій” (Compare Version) програми Word for
Windows.

Кореневі розділи

В деяких випадках два різних підрозділу реєстру будуть вказувати на один і той же блок даних. Щоб помітити це, подивіться запис значення параметра “По умовчанням “в підрозділі HKEY_CLASSES_ROOT \ .386, потім перейдіть до значення “За замовчуванням” підрозділу HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ .386. Кожне з них містить підрядок, в якій написано vxdfile. Якщо змінити цей рядок в одному розділі, вона одночасно зміниться і в іншому. Розглянувши ці розділи ще пильніше, можна встановити, що і HKEY_CLASSES_ROOT, і HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes містять не тільки ідентичні дані, а й ідентичні підрозділи.


Як тільки ви помітите такі збіги, стане простіше розібратися в структурі реєстру. Він містить шість кореневих розділів, які формують перший рівень дерева. Всі інші розділи представляють собою підрозділи цих шести:


Таким чином, в реєстрі є тільки три розділи, які не дублюються: HKEY_DYN_DATA, HKEY_USERS і HKEY_LOCAL_MACHINE. Отже, якщо ви експортуєте реєстр цілком, виходить в результаті REG-файл містить лише два кореневих розділу – HKEY_USERS і HKEY_LOCAL_MACHINE (при цьому HKEY_DYN_DATA розміщується в ОЗУ).


Структура кореневих розділів може здатися надлишкової, але таке дублювання вельми корисно. Розділи HKEY_CURRENT_USER і HKEY_CURRENT_CONFIG дозволяють відокремити поточні настановні параметри вашої машини від інших, не завжди використовуються характеристик системи. Розділ HKEY_CLASSES_ROOT – по суті копія всій реєстраційної бази даних, яка найбільш важлива при зміні настройки системи. Саме тут визначається порядок роботи з файлами різних типів Windows 95.

HKCR і типи файлів

Щоб відкрити документ в середовищі Windows 95, досить двічі клацнути клавішею миші на його піктограмі. Ця функція реалізується за допомогою модуля “Типи файлів” (File Types) Windows 95, який встановлює зв’язки між прикладними програмами і розширенням. Вибравши пункт “Вид | Параметри” (View | Options) меню “Провідника” і перейшовши до закладки “Типи файлів”, можна переглядати, редагувати або створювати нові типи файлів. Однак механізм розподілу файлів на типи закладений в реєстрі. Розділ HKCR містить підрозділ-ідентифікатор для кожного типу файлів, підрозділ для кожного розширення, пов’язаного з типом файлу, і пару спеціальних підрозділів з іменами * і
CLSID.


Значенням підрозділу розширення за замовчуванням служить ім’я відповідного підрозділу-ідентифікатора, в якому зберігається назва типу файлу і його характеристики. Наприклад, для командних файлів в DOS використовується розширення bat. У реєстрі є підрозділ з ім’ям. bat, який містить посилання на підрозділ batfile. В поле значення “За замовчуванням” для командних файлів записано “Пакетний файл MS-DOS” (Саме так описується тип файлу на закладці “Типи файлів “). Таким чином, при подвійному натисканні клавіш миші на позначенні командного файлу система звернеться до підрозділу. bat, а далі перейде до підрозділу batfile, звідки і отримає вказівку запустити цей командний файл в сеансі DOS.


Однак не всі ідентифікатори пов’язані з розширенням. До числа таких типів системних файлів відносяться Audio CD, “Диск” (Drive), “Папка з файлами” (Directory) і “Папка” (Folder). У підрозділі * визначаються розширення оболонки і команди контекстного меню для всіх файлів, а в CLSID перераховані всі системні об’єкти, пов’язані з конкретним ідентифікаторів.

Підрозділи розширень і ідентифікатори типів файлів

Більшість підрозділів розширень містять тільки назва ідентифікатора, з яким вони пов’язані, але деякі можуть мати підрозділ ShellNew. Цей підрозділ дозволяє включати відповідний пункт в меню “Створити” (New) Windows 95 і може містити посилання на виконані модулі або дії.

Розділ-ідентифікатор визначає конкретний тип файлу через великий масив підрозділів. Підрозділ DefaultIcon містить вказівку на піктограму типу файлів (кожен документ, що відноситься до пов’язаного з даними розширенням типу, позначається цією піктограмою). У підрозділі Shell перераховуються дії, які можна виконувати над файлами цього типу. Всі дії перераховані в контекстному меню документа (доступ до нього здійснюється клацанням правою клавіші миші на документі). Назва дії по замовчуванням – воно виконується у відповідь на подвійне клацання мишею на документі – виводиться жирним шрифтом. Нарешті, через підрозділ shellex здійснюється підключення спеціальних обробників, які можуть знадобитися для файлів цього типу. Для деяких рідко зустрічаються примірників розділ-ідентифікатор буде містити й інші підрозділи, але ми зосередимо свою увагу на цих трьох.


Це макрокоманда мовою Word Basic просить вас перейменувати файл рахунку, який був створений з допомогою пункту меню “Створити” (New), зберігає його з розширенням doc і видаляє вихідний файл.

 Макрокоманда для шаблону "Рахунок" в меню New
Sub Main
CurrentFile$=FileName$()
NewDir$="D:\My Documents\Invoices" Prompt $ = "Створення нового рахунку в каталозі" + NewDir $ + ":"
On Error Goto Bye FName $ = InputBox $ (Prompt $, "Система виписки рахунків", "invoice.doc")
While Files$(NewDir$+Fname$)<>"" EPrompt $ = "Файл з ім'ям" + NewDir $ + FName $ EPrompt $ = EPrompt $ + "вже існує." Будь ласка, введіть нове ім'я. " FName $ = InputBox $ (EPrompt $, "Система виписки рахунків", "invoice.doc")
Wend
FileClose 1
On Error Goto BadName
Name CurrentFile$ As NewDir$+FName$
FileOpen NewDir$+FName$
Goto Bye
BadName: Msg $ = "Невдача. Або не можна знайти" + CurrentFile $ Msg $ = Msg $ + ", або" + NewDir $ + FName $ Msg $ = Msg $ + "неправильна назва файлу." MsgBox Msg $, "Система виписки рахунків", 16
Bye:
End Sub


Підрозділ ShellNew

Для доступу до меню “Створити” виберіть “Створити”, клацнувши правою клавішею миші на “Робочому столі” (Desktop), по відкритій папці або вікна “Провідника”. Це меню – воно дозволяє створювати нові документи зареєстрованих прикладних програм – визначається через підрозділи ShellNew в HKCR.


ShellNew – це звичайно єдиний підрозділ для розширення (якщо воно взагалі його має). Однак, якщо з розширенням пов’язано кілька записів меню New, в ньому міститься кілька вкладених підрозділів ShellNew. Наприклад, розділ. Doc має три окремих підрозділу, представляють різні записи: Word.Document.6, Word.Document і Notepad.Document.1, у кожній з яких є свої власні ShellNew. Деякі розширення можуть містити вкладені підрозділи ShellNew, навіть якщо у них є тільки один запис в меню New.


Підрозділ ShellNew містить один або кілька параметрів:

Кожне з цих полів при виборі пункту меню “Створити”, який він визначає, використовується для своєї мети:
Windows створює новий файл в тому місці, де був здійснений клацання правою клавішею миші – на “Робочому столі “, в папці або в” Провіднику “. Ім’я нового файлу завжди успадковує формат:

   New Publicname .ext

де Publicname – рядок, що зберігається в полі “По замовчуванням “підрозділу-ідентифікатора, а ext – відповідний підрозділ розширення. Якщо ви створюєте текстовий файл, наприклад Windows називає його Текстовий документ.txt (New Text Document.txt). З значення по замовчуванням в підрозділі-ідентифікаторі txtfile зчитується Текстовий документ, а txt – відповідне розширення.

Для демонстрації можливостей HKCR ми створили пункт меню “Створити” для шаблону рахунку. Цей приклад може здатися нераціональним, але він допоможе зрозуміти деякі концепції, що лежать в основі реєстру.


Спочатку створимо підрозділ. Inv, який вказує на підрозділ-ідентифікатор InvoiceFile. Цей підрозділ в поле “За замовчуванням” повинен містити значення “Рахунок”. Для появи пункту “Рахунок” в меню “Створити” необхідно, крім того, зіставити цьому розширенню здійснимий модуль. Для цього просто вставте маршрут доступу до WinWord в елемент HKCR \ InvoiceFile \ Shell \ Open \ Command. Нарешті, скопіюйте свій шаблон рахунку в каталог C: \ Windows \ ShellNew до створення в підрозділі . Inv елемента ShellNew, що містить поля FileName і Command. Коли цей пункт буде вибраний з меню “Створити”, виконання команди призведе до відкриття нового файлу-рахунки з ім’ям Счет.inv у вікні WinWord, з подальшим викликом дії на мові WordBasic. Ця макрокоманда запропонує перейменувати файл, збереже його з розширенням doc в зазначеному каталозі і видалить inv-файл.

Підрозділ DefaultIcon

Підрозділ DefaultIcon пов’язує піктограму з конкретним файлом або прикладної програмою. Більшість значень в полях DefaultIcon строго дотримуються формату:

   C:\Windows\Filename, N

де Filename – назва файлу, в якому зберігається одна або кілька піктограм (зазвичай exe-, dll-або ico-файл), а N – ціле число, яке показує, яку піктограму із серії слід використовувати (Перша з них має номер 0, друга – 1 і т. д.). В деяких випадках N – негативне число. Такі значення є ідентифікатори ресурсів, а не номери піктограм (всі ресурси в здійснимих модулях мають двійковий ідентифікатор). Для виведення піктограм з конкретного файлу на екран викличте вікно властивостей абревіатури, клацніть на кнопці “Змінити значок” (Change Icon) і виберіть файл, який хочете переглянути.

Деякі значення підрозділів DefaultIcon містять рядок% 1. У таких випадках файл, який звертається до цій піктограмі, сам генерує її (в рамках HKCR% 1 – змінна, яка зв’язується з файлом, асоційованим з даним підрозділом). Для роботи цього механізму або система, або файл повинен надати обробник піктограм (IconHandler). Система надає обробники піктограм для файлів exe-, ico-, cur-, ani-і bmp-. Утиліта Hyperterminal (її підрозділ в реєстрі позначається htfile) – це приклад файлу, який має свій власний обробник піктограм. Система використовує рядок% 1 для exe-, ico-, cur-і ani-файлів, але не для bmp-файлів. Якщо ви бажаєте, щоб піктограма bmp-файла представляла собою мініатюрну копію цього зображення (thumbnail), можна поміняти значення елемента HKCR \ Paint \ Picture \ DefaultIcon на% 1. На жаль, якщо системі доводиться прочитувати досить велике растрове зображення, ви можете зіткнутися з великою затримкою при кожному оновленні екрану.


Коли підрозділ-ідентифікатор не містить елемента DefaultIcon, система Windows 95 повинна отримати піктограму звідкись ще. Якщо з ідентифікатором пов’язаний здійснимий модуль, його піктограма зменшується в розмірі і поміщається всередину піктограми документа (Зображення чистого аркуша паперу). Якщо пов’язаного исполнимого модуля немає, система використовує стандартну піктограму з логотипом Windows 95.

Підрозділ Shell

Підрозділ Shell ідентифікатора містить назви всіх дій, які пов’язані з конкретним типом файлів. У підрозділі-ідентифікаторі batfile, який управляє командними файлами, передбачені підрозділи для редагування, відкриття та друку. Кожна дія визначається параметрами, перерахованими на вкладці Типи файлів для типу “Пакетний файл” MS-DOS і в контекстному меню, яке викликається при клацанні правою клавішею миші на зображенні командного файлу.


Кожна дія описується командним рядком. Значення “За замовчуванням” для цього підрозділу завжди містить командний рядок, в якій є псевдопеременная% 1. Вона вказує на файл, над яким виконується дія. Наприклад, командний рядок для редагування командного файлу MS-DOS має такий вид:

   C:\Windows\Notepad.exe %1

Коли ви клацаєте правою кнопкою миші на зображенні командного файлу і вибираєте “Змінити” (Edit), система відкриває цей файл у вікні “Блокнота” (Notepad). Якщо використовуються довгі імена файлів, то в більшості випадків аргумент% +1 слід брати в лапки. Без лапок прикладна програма може невірно інтерпретувати прогалини, що містяться в імені файлу.

Коли відбувається виклик контекстного меню файлу, дія зазвичай називається точно так само, як і відповідний йому підрозділ. Однак так відбувається тільки тоді, коли параметр “За замовчуванням” містить порожній рядок. Якщо цей рядок не порожній, то вона стає ім’ям дії. Це дає можливість в інтернаціональних версіях Windows використовувати англійські назви підрозділів реєстру (наприклад, open) і назви на іншій мові в контекстних меню.


З міркувань сумісності з певними прикладними програмами Windows 3.x можна виявити підрозділи Shell в підрозділах розширень, а не в підрозділах-ідентифікаторах, але це трапляється виключно рідко.

Ідентифікатори CLSID

Точно так само як всі ми потребуємо особистих ідентифікаторах системи соціального забезпечення (мова йде про США. – Прим. пер.), щоб відрізняти нас від інших громадян країни, програмного об’єкту потрібно GUID – глобально унікальний ідентифікатор (globally unique identifier). В системі Windows 95 до GUID відносяться CLSID (classes identifiers, ідентифікатори класів), які вперше були використані в специфікації OLE. CLSID – це 16-байт значення, що містить 32-шістнадцяткові цифри в форматі 8-4-4-4-12 (8 цифр, дефіс, 4 цифри, дефіс і т. д.).


Виробники програмного забезпечення можуть отримати CLSID для об’єкта, запросивши його в корпорації Microsoft або запустивши програми, які входять в склад Microsoft SDK (Uuuidgen.exe) і DDK (Guidgen.exe). Коли ви запускаєте таку програму, перші вісім шістнадцятиричних цифр генеруються випадковим чином, наступні чотири формуються виходячи з поточної дати і часу, а останні 20 цифр обчислюються на основі апаратних характеристик комп’ютера. Імовірність формування одного і того ж числа двічі мізерно мала.


CLSID являють собою просто імена, які використовуються операційною системою для ідентифікації зазначених об’єктів. Наприклад, підрозділ “Портфель” (Briefcase) повинен використовувати незалежний об’єкт при створення нового екземпляра “Портфеля”. Отже, він містить свій підрозділ CLSID, який виглядає так:

   {85BBD920-42A0-1069-A2E4-08002B30309D}

Таким чином, в розділі Briefcase є підрозділ, значення “За замовчуванням” якого містить наведену вище рядок.

Всі CLSID перераховані в розділі HKCR \ CLSID. Поле “По замовчуванням “кожного підрозділу CLSID містить назву об’єкта, як, наприклад, CD Audio Track або Microsoft Excel Worksheet. Ці розділи також містять інші підрозділи, які визначають об’єкт. Два самих типових об’єкта – InProcServer і InProcServer32, які містять динамічно компонуемих бібліотеки (DLL), що викликаються при зверненні до обробникам об’єктів в процесі реалізації OLE-зв’язку.

Підрозділи SHELLEX і *

Для розробників найбільш приваблива особливість середовища Windows 95 складається в її розширюваності – незалежні фірми можуть доповнювати оболонку спеціальними обробниками. Для налаштування обробника отримаєте значення CLSID, надайте його DLL через підрозділ InProcServer і пошліться на цей CLSID де-небудь в HKCR. Посилання на такі обробники зазвичай містяться в підрозділі shellex розділу-ідентифікатора.


Ось приклади деяких типових обробників:

Спеціальний розділ – HKCR \ * – містить обробники, застосовні до всіх об’єктів. Він містить підрозділ shellex, який успадковує той же формат, що й розділи-ідентифікатори.

Прапори редагування

Закладка “Типи файлів” (File Types) у меню “Вид | Параметри” (Viww | Options) “Провідника” (Explorer) дозволяє редагувати більшість файлів, але певні параметри не можна змінити. Наприклад, дія за замовчуванням для командного файлу запускає його, а не відкриває у вікні “Блокнота” або WordPad. Отже, коли ви двічі клацаєте кнопкою миші по зображенню файлу AUTOEXEC.BAT, відкривається вікно DOS і цей файл виконується. Однак, якщо ви хочете змінити це виконується за умовчанням дію і редагувати командний файл при подвійному натисканні, закладка “Типи файлів “не дозволить зробити це. Кнопка” За замовчуванням ” (Set Default) для типу “Пакетний файл MS-DOS” завжди відображається сірим кольором (як відключена).


Це відбувається тому, що підрозділ HKCR \ batfile містить параметр EditFlag. Такі параметри використовуються всюди в реєстрі, щоб перешкодити недосвідченим користувачам змінити певні налаштування системи. Двійкові дані в поле EditFlag підрозділу batfile виглядають як d0 04 00 00. Якщо змінити це значення на 00 00 00 00, з’явиться можливість змінювати будь-які параметри командного файлу. Однак не заносите нулі в параметр EditFlag без розбору: якщо зробити це в системному підрозділі-ідентифікаторі, наприклад Drive або AudioCD, він зовсім зникне зі списку типів файлів. Для ідентифікаторів, які пов’язані з розширеннями, допускається прирівнювати все EditFlag до 00 00 00 00. Для системних ідентифікаторів замініть дані в EditFlag на 02 00 00 00.


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

Наприклад, для підрозділу Drive шістнадцяткове значення EditFlag одно d2 01 00 00 (в двійковому форматі 1101 0010 0000 0001). У байті 1 встановлені біти 2, 5, 7 і 8, а в байті 2 – біт 1. Параметр EditFlag для підрозділу batfile дорівнює d0 04 00 00 в шістнадцятковому представленні або 1101 0100 0000 0100 в двійковому. В цьому випадку в байті 1 встановлені біти 5, 7 і 8 і біт 2 в байті 2.

Біти 4, 5 і 6 в байті 2 впливають тільки на захищені від редагування дії. У розділах, що описують дії (Типу HKCR \ batfile \ shell \ open), параметри EditFlag визначають захист. Якщо біт 1 байта 1 EditFlag такого параметра дорівнює 0 (або у нього немає EditFlag), то опис цієї дії захищене від редагування. Якщо біт 1 байта 1 дорівнює 1, захист знята.


Будьте дуже обережні, змінюючи системні параметри EditFlag. Ці внутрішні по відношенню до операційної системі значення офіційно не задокументовані і можуть змінитися в наступних версіях.

Інші характеристики HKCR

Три системних підрозділу-ідентифікатора – Folder, Drive і Directory – мають кілька додаткових відмінностей. Folder і Drive визначають типи файлів “Папка” і “Диск” відповідно, тоді як Directory визначає тип “Папка з файлами” (File Folder, в поле його значення “За замовчуванням” можна прочитати “Папка з файлами”). “Диск” та “Папка з файлами” повинні розглядатися як нащадки типу “Папка”. Будь-яке дію, призначена типу “Папка”, застосовно до системних папок (таким, як “Мій комп’ютер “) так само, як до” Папка з файлами “(наприклад, C: \ Windows) і “Диско” (наприклад, A :).


HKCR також містить підрозділ Unknown, який обробляє незареєстровані розширення. Зазвичай при клацанні мишею по файлу з незареєстрованим розширенням виводиться діалогове вікно “Відкрити за допомогою “(Open With), і при цьому надається можливість вибрати зі списку прикладних програм. Можна також створити нові типи файлів на цьому екрані, встановивши прапорець “Завжди використовувати вибрану програму “(Always Use This Programm to Open This File). Якщо ви хочете відкривати всі файли невідомого типу в ASCII-форматі і обходитися без діалогу “Відкрити з допомогою “, додайте підрозділ HKCR \ Unknown \ Shell \ Notepad \ Command зі значенням “За замовчуванням”
C:\Windows\Notepad.exe %1.


Кореневий розділ HKCR зберігає масу інформації. Він може бути потужним засобом настройки типів файлів в Windows 95, але будьте дуже обережні, редагуючи його компоненти. Переконайтеся, що підготували виконавчі та ASCII-копії реєстру до внесення будь-яких змін.

Апаратні піктограми на робочому столі

Зазвичай на робочому столі Windows 95 розташовані п’ять пов’язаних з апаратурою піктограм, які не можна перемістити або видалити звичайним чином: “Мій комп’ютер “(My Computer),” Мережеве оточення “(Network Neighborhood), “Вхідні” (Inbox), The Microsoft Network і “Кошик” (Recycle Bin) (при установці пакету Windows 95 Plus! додається апаратна піктограма Internet). В залежності від типу обраної вами установки деякі з цих піктограм можуть відсутні. Наприклад, якщо ви не встановлюєте Microsoft Exchange, піктограма “Вхідні” не потрібно. “Портфель” також представляє собою піктограму, що відноситься до апаратури, але вона не зафіксована на робочому столі.


У контекстному меню кожної з цих піктограм, за винятком The Microsoft Network (проти присутності якої на робочому столі Windows 95 до недавнього часу заперечувало Міністерство юстиції США), немає пункту “Видалити” (Delete). Однак за допомогою реєстру можна прибрати або перемістити всі ці піктограми в інше місце.

Зміна піктограм, що відносяться до апаратури

Хоча існує можливість видалити піктограму “Мережеве оточення” за допомогою редактора системних правил (System Policy Editor), набагато простіше зробити це через реєстр. Знайдіть розділ HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer і створіть поле параметра типу DWORD з ім’ям NoNetHood. Якщо ви привласнити йому значення 1 і перезавантажте систему, піктограма “Мережеве оточення” не зможе з’явитися. Для відновлення її положення змініть це значення на 0.


Для зміни інших піктограм, пов’язаних з апаратурою, знайдіть розділ HKLM \ SOFTWARE \ Microsoft \
Windows\CurrentVersion\explorer\Desktop\NameSpace. Усередині цього розділу кожна піктограма має свій власний параметр CLSID, описаний вище, – ідентифікує індивідуальні об’єкти 16-байт значення – він вказує на відповідний підрозділ в HKCR \ CLSID. Для видалення піктограми виправте значення парного параметра в HKCR \ CLSID. CLSID для кожній з піктограм, що відносяться до апаратури, такі:

Наприклад, якщо ви хочете змінити піктограму “Корзина”, спочатку слід знайти підрозділ в
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer \ Desktop \ NameSpace, у якого в поле значення по замовчуванням записано “Корзина”: {645FF040-5081-101B-9F08- 00AA002F954E}. Якщо видалити цей підрозділ, то система прибере “кошику” з “Робочого столу”. Однак можна просто перейменувати “кошику”, відшукавши відповідний
CLSID (HKCR\CLSID\{645FF040-5081-101B-9F08- 00AA002F954E}) і змінивши ім’я в поле його значення по замовчуванням.

Крім того, можна створювати нові версії апаратних піктограм, які мають властивості “Перемістити”, “Копіювати” і “Видалити”. Наприклад, піктограмі The Microsoft Network відповідає CLSID {00028B00-0000-0000-C000-000000000046}. Для створення нової піктограми з ім’ям MSNetwork видаліть розділ
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer
\Desktop\NameSpace\{00028B00-0000-0000-C000- 000000000046} і створіть нову папку з ім’ям:

   MSNetwork.{00028B00-0000-0000-C000-000000000046}

Папка з таким розширенням набуває властивості оригінальної піктограми The Microsoft Network, але при цьому її можна видаляти або переміщати.


Як зазначалося на початку статті, піктограму “Мій комп’ютер “можна змінити, відшукавши підрозділ
HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ DefaultIcon і вказавши файл з новим зображенням в поле “За замовчуванням”. Подібний метод можна застосовувати для інших піктограм, пов’язаних з апаратурою. Єдина змінна, необхідна для цього, – параметр CLSID. Просто перейдіть до відповідного розділу в HKCR \ CLSID, а потім до підрозділу DefaultIcon. За винятком “Кошика”, значення “По замовчуванням “цих розділів представляє собою повний маршрут доступу до файлу, який містить відповідну піктограму.


Для “Кошики” в розділі DefaultIcon є три параметра: “За замовчуванням”, empty (порожній) і full (Повна). Параметр empty визначає піктограму, позначає порожню “кошику”, тоді як full вказує на піктограму “Кошика”, що містить, принаймні, один файл. Поточна піктограма “Кошика” зберігається в поле “За замовчуванням”.

Системні піктограми

Windows 95 витягує більшість своїх основних системних піктограм з файлу C: \ Windows \ Shell32.dll. Перші 42 піктограми в цьому файлі показані, представляє собою копію екрану програми Microangelo фірми Impact Software. Зображення з номерами 006 і 007 вживаються для позначення накопичувачів на гнучких дисках на “Робочому столі” або в папці “Мій Комп’ютер”. Піктограма з міткою 030 позначає системні абревіатури, а 029 показує надаються в загальне користування накопичувачі, каталоги та принтери. Ролі інших піктограм з файлу Shell32.dll такі:

Як уже зазначалося вище, при виборі піктограми з файлу в Windows 95 відлік слід вести від нуля, а не від одиниці (перша піктограма має номер 0, друга 1 і т. д.). Наприклад, щоб вказати на піктограму 007, слід використовувати наступний формат:

   C:\Windows\System\Shell32.dll, 6,

де 6 вказує на сьому піктограму.

Для зміни системної піктограми необхідно створити новий розділ HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ explorer \ ShellIcons (Якщо встановлено пакет Windows 95 Plus!, цей розділ вже є.) Значення параметрів в цьому розділі – він перевизначає функції піктограм з файлу Shell32.dll – записуються в такому форматі:

   N = Filename, n

N – число від 0 до 41, що вказує на конкретну піктограму в Shell32.dll. Filename – маршрут доступу до файлу з піктограмою, а n позначає піктограму в цьому файлі.

Наприклад, піктограма 030 зазвичай позначає абревіатуру. Однак, якщо ви хочете позначати абревіатури піктограмою 031, необхідно створити наступний запис в розділі ShellIcons (пам’ятаєте, відлік ведеться від 0, а не від 1):

   29 = C:\Windows\System\Shell32.dll, 30.

Такі зміни можна здійснювати без ініціалізації системи. Щоб система Windows могла завантажуватися швидше, поточні значення її системних піктограм зберігаються в прихованому файлі C: \ Windows \ ShellIconCache. При початковому запуску система зчитує необхідні зображення з цього файлу або створює його заново, якщо він відсутній. Однак, якщо змінюються розміри піктограм, Windows перебудовує ShellIconCache “на ходу “. Для цього клацніть правою кнопкою миші на “Робочому столі”, виберіть “Властивості” і перейдіть до вкладці “Вигляд” (Appearance). Потім у поле “Елемент” (Item) виберіть “Зображення” (Icon). Якщо ви змініть розмір піктограм і клацніть по кнопці “Застосувати” (Apply), Windows перебудує папку ShellIconCache і зафіксує зміни в реєстрі (тим же способом легко можна відновити розмір піктограм).

Положення піктограм на робочому столі

На жаль, Windows 95 не передбачає простого механізму збереження і відновлення положення піктограм на “Робочому столі”. Якщо ви ненароком виберете пункт “Упорядкувати значки” (Arrange Icons), Windows розмістить вже розставлені вами піктограми строго за алфавітом. Для збереження своїх налаштувань вам доведеться вдатися до складного методу редагування реєстру, який залежить від комп’ютера і навіть може змінюватися з часом.


Положення піктограм зазвичай зберігаються в одному з 29 підрозділів розділу HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Streams. На нашому комп’ютері вони опинилися в підрозділі HKCU \ SOFTWARE \ Microsoft \
Windows\CurrentVersion\Explorer\Streams\24.


Для пошуку підрозділу Streams, в якому зафіксовано опис “Робочого столу”, виділіть Streams в редакторі реєстру, експортуйте його в файл Loc.reg і перегляньте останній за допомогою “Блокнота”. Підрозділ Streams зазвичай містить два двійкових значення: CabView і ViewView (деякі мають тільки поле ViewView). Положення піктограм на “Робочому столі” зберігається в підрозділі, який має невелике поле CabView і величезне поле ViewView. Наприклад, у нашій системі ViewView в підрозділі 24 містило 48 рядків даних при перегляді в “Блокноті”, в той час як довжина наступного за величиною блоку ViewView становила лише півтори рядка.


Тепер подивимося на той же самий розділ в редакторі реєстру. Оскільки редактор відображає дані як в шістнадцятковому, так і в ASCII форматі, можна розпізнати імена файлів “Робочого столу” в ASCII-секції вікна “Зміна двійкового параметра” (Edit Binary Value), якщо обрано правильний підрозділ.


Як тільки ви будете впевнені в тому, що вибрали потрібний підрозділ, переконайтеся, що Loc.reg розміщений в кореневому каталозі вашого диска і додайте наступну команду імпорту до свого файлу Autoexec.bat:

   REM Regedit C:\Loc.reg.

Якщо ви ненароком реорганізуете свої піктограми на “Робочому столі”, видаліть REM з вказаної вище рядки і перезапустіть систему. Оформлення “Робочого столу” буде відновлено. Для підтримки постійної резервної копії вашого видоизменяющегося “Робочого столу “, відновлюйте REM і повторно експортуйте Loc.reg всякий раз, коли вносите істотні зміни. Команду імпорту слід вставити в файл Autoexec.bat, оскільки Windows зберігає поточне стан “Робочого столу” при виході і зчитує його конфігурацію при початковому запуску.

Однак, оскільки Streams містить лише свіжі дані з “Провідника” (подібно описуваних нижче MRU-списками), підрозділ, що відноситься до положення піктограм на “Робочому столі”, може бути втрачено, якщо ці дані використовуються нечасто. Якщо таке трапиться, слід перемішати піктограми на “Робочому столі”, щоб був створений новий підрозділ. Як тільки ви знайдете цей новий підрозділ, відкрийте Loc.reg і змініть номер підрозділу на початку файлу. Нарешті, видаліть REM з рядка команди імпорту в файлі autoexec.bat і перезапустіть систему.

Запуск програм при запуску системи

Для автоматичного запуску прикладної програми при початковому запуску Windows 3.0 доводилося вставляти команди Run або Load в файл WIN.INI. У Windows 3.1 цей процес був спрощений за рахунок появи “Групи запуску” (StartUp) Диспетчера Програм. У Windows 95 є подібна папка “Автозапуск” (Startup), в якій розміщуються абревіатури (C: \ Windows \ StartMenu \ Program \ Startup (C: \ Windows \ Головне меню \ Програми \ Автозавантаження)) і, що також сумісна зверху вниз з INI-файлами.


На додаток до цих двох методів у реєстрі є, принаймні, шість розділів, які дозволяють завантажувати програми при запуску системи. Система автоматично виконує їх при ініціалізації. Чотири з них (Run, RunOnce, RunServices і RunServicesOnce) розміщуються в розділі HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion і два (Run і RunOnce) – в розділі
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion.


Як дозволяють припустити їх імена, і в розділі RunOnce, і в розділі RunServicesOnce розташовуються програми, що виконуються тільки один раз. Вони запускаються при наступному перезапуску Windows, а потім система видаляє їх вміст з реєстру. Програми з інших розділів виконуються при кожному запуску системи. Розділи Run і RunOnce в HKLM містять прикладні програми, які повинні завантажуватися і виконуватися до запуску будь-якої іншої програми. До числа таких програм відносяться програми установки, які перезапускають машину і завершують настройку перш, ніж будуть викликані програми зі звичайного набору.


Коли програми запускаються за допомогою розділів Run і RunOnce в HKCU, вони відновлюють той стан, яке зберегли перед останнім виходом із системи. Коли така програма оповіщається про вихід із системи, вона зберігає інформацію про використовувалися файлах і інших поточних параметрах в цих двох розділах. Розділи RunServices і RunServicesOnce забезпечують виклик програм до виведення на екран запрошення на вхід в систему. Підрозділи в HKLM виконуються для всіх користувачів на даній машині, тоді як підрозділи в HKCU пов’язані з конкретним користувачем.

Доступ до файлів установки

При встановленні додаткових файлів Windows 95 з допомогою діалогу “Установка і видалення програм” (Add / Remove Prigrams) і “Панелі управління” система знаходить файли через запис в розділі
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup. Поле значення SourcePath містить маршрут доступу до папці або накопичувача. Якщо система Windows 95 встановлювалася з компакт-диска, значення SourcePath вказує на накопичувач CD-ROM. Якщо застосовувалися дискети, воно вказує на накопичувач на гнучких дисках.


Це поле може бути корисно, якщо ви копіюєте настановні диски Windows 95 на свій жорсткий диск. Наприклад, якщо ви копіюєте файли в папку C: \ Winstall, змініть строкове значення параметра SourcePath з A: \ на C: \ Winstall. Таким чином, система завжди буде шукати правильну папку при додаванні або видаленні програм.

Списки останніх команд і документів

Коли з меню “Пуск” (Start) вибирається пункт “Виконати” (Run), за допомогою з’являється вікна діалогу можна швидко запустити виконуваний файл або відкрити папку. Список попередніх команд зберігається в розділі
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer \ RunMRU (MRU це стандартна абревіатура словосполучення Most Recently Used – найостанніші з використовувалися). У цьому розділі містяться до 28 параметрів (в тому числі “За замовчуванням”). Якщо список заповнений, 26 записів ідентифікуються буквами алфавіту. В них містяться останні 26 команд (в форматі ASCII), які ви вводили в діалозі “Виконати” або в діалозі “Перейти” (Go To) “Провідника”. В поле MRUList перераховується 26 алфавітних параметрів згідно з тим, як давно вони використовувалися. Перша буква відповідає останній команді, друга – передостанній і т. д.


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


Якщо вибрати “Документ” (Document) з меню “Пуск”, можна побачити останні 15 документів, які відкривалися подвійним клацанням кнопкою миші або через стандартний діалог Windows 95. Цей список викликається з підрозділу HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RecentDocs, який містить свій параметр MRUList і 15 полів значень, позначених літерами алфавіту. У кожному з цих 15 полів зберігається ім’я документа й ім’я його ярлика в C: \ Windows \ Recent (в двійковому форматі).

Псевдоніми і маршрути доступу до програм

У розділі HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths є декілька підрозділів, які ідентифікують виконані файли в форматі NAME.EXE. Значення “За замовчуванням” кожного з параметрів містить маршрут доступу до відповідного исполнимого модулю. Другий параметр, званий Path, може ідентифікувати папки, які додані цієї програмі.


Коли ви набираєте NAME у вікні діалогу “Виконати”, Windows спочатку шукає його в папці Windows, потім у системному каталозі і по заданому до запуску Windows маршруту DOS. Якщо система ніде не знаходить исполнимого модуля з таким ім’ям, Windows переглядає розділ App Paths. При виявленні відповідного параметра вона запускає вказаний здійснимий модуль.


Набирається ім’я може не бути ідентично імені исполнимого модуля, але має відповідати імені параметра. Отже, ці параметри можна застосовувати для присвоєння коротких псевдонімів часто використовуваним програмам, командним файлам або групам прикладних програм. У довіднику Windows Interface Guidelines стверджується, що якщо користувач переміщає здійснимий модуль, Windows виправляє записи в App Paths, але наш досвід показує, що це не так.


Знання правильних параметрів INI-файлів часто було критично важливо при роботі в середовищі Windows 3.x. Оскільки Windows 95 більш потужна і більш складна Середа, приховані параметри реєстру ще більш важливі. Незважаючи на складність своєї структури, реєстр – довгоочікуване удосконалення INI-файлів Windows 3.x. Як тільки ви ознайомитеся з його конструкцією, ви більше не захочете повертатися до файлів AUTOEXEC.BAT, CONFIG.SYS і INI-файлів. При роботі з Windows 95 вам цього й не доведеться робити ..

Баррі Саймон – Позаштатний редактор журналу PC Magazine і співавтор CD-MOM 95: The mother of All Windows
95 Books (Addison-Wesley, 1995)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*