Windows NT была первой операционной системой Microsoft, которая хранила всю информацию о настройке системы и программ не в текстовых файлах (config.sys, autoexec.bat и файлы с расширением ini), а в реестре (registry), что имеет следующие преимущества:
• данные не разбросаны по различным файлам, а логически собраны в одной базе;
• информация в реестре имеет не плоскую, типа параметр = значение, а древообразную структуру, благодаря чему каждый параметр может иметь множество подзначений разного типа;
• возможен доступ к реестру локального компьютера по сети для диагностики и администрирования.
Реестр – это «древообразная» иерархическая база данных. Пять разделов реестра Windows NT/2000 – HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS и HKEY_CURRENT_CONFIG (в реестре Windows 95/98/ME имеется также шестой раздел – HKEY_DYN_DATA), в свою очередь, ветвятся на множество подразделов и т. д. Например, данные, описывающие параметры работы программы Windows Me System Agent, хранятся в разделе HKEY_LOCAL_MACHINE\ Software\Microsoft\Plus!\System Agent:
• HKEY_LOCAL_MACHINE – информация о компьютере: оборудование, параметры программ;
• HKEY_CURRENT_CONFIG – текущая конфигурация устройств;
• HKEY_CLASSES_ROOT – информация по OLE, межпрограммным связям, данные о ярлыках, параметры рабочего стола и т. п.; это практически та же информация, которая в Windows 3.x хранилась в файле reg.dat;
• HKEY_USERS – информация обо всех пользователях компьютера;
• HKEY_CURRENT_USER – информация о параметрах текущего пользователя: внешний вид рабочего стола, используемая звуковая схема и т. п.
Данные реестра хранятся в виде переменных, которые имеют имена и бывают трех типов: строчные (например, «vgaoem.fon», «Microsoft Network», «Kamill Akhmetov»), двоичные (например, 00 00 00 00 0e 00 00 00) и формата «двойное слово» (например, 0x00000001). Так, переменная, от которой зависит, будет ли на панели задач отображаться значок программы System Agent, называется EnableTrayIcon, имеет формат «двойное слово» и для отображения значка должна быть равна 0x00000001.