یک درخت را در نظر بگیرید که از ریشه - تنه - شاخه - برگ - گل - ... تشکیل شده است یعنی از اگر از ریشه شروع کنیم و همین طور جلو بریم به برگها یا گلها میرسیم ، ریجستری در ویندوز هم یک ساختار درختی دارد ، البته در نگاه اول ممکنه برای شما عجیب و غیر قابل فهم باشد ،اما windows Explorer را در ویندوز در نظر بگیرید که از My Computer شروع شده بعد به درایوها میرسیم بعد شاخه ها یعد زیر شاخه ها .... تا نهایتا به فایلها میرسیم ساختار ریجستری نیزدقیقا چنین ساختاری را دارد.
هر شاخه اصلی با آیکون Folder نمایش داده می شود که به آنها اصطلاحا Hive نیز گفته می شود. هر شاخه خود می تواند شامل زیر شاخه هایی باشد تا نهایتا به متغیرها یا مقادیر برسند. در متغیرها است که اطلاعات واقعی رجیستری ذخیره می شود.
در رجیستری سه نوع متغیر وجود دارد که عبارتند از :String , Binary , Dword که هر کدام از آنها در شرایط خاصی قابل استفاده می باشد. به طور شش شاخه اصلی در رجیستری وجود دارند که هر کدام بخشی از اطلاعات ذخیره شده در رجیستری را نگهداری می کنند که در اینجا اشاره ای کوتاه بر هر کدام داریم:
HKEY_CURRENT_USER: این شاخه به بخشی از اطلاعات شاخه HKEY_USERS اشاره می کند که در آن خصوصیات و اطلاعات کاربر فعلی از قبیل نام کاربر، تنظیمات میز کاری (Desktop) ، تنظیمات منوی شروع (Startmenu) و ... در سیستم نگهداری می شود.
HKEY_CLASS_ROOT: این شاخه شامل اطلاعاتی از قبیل :نگاشت پیوستگی فایلها برای پشتیبانی از ویژگی کشیدن و رها کردن (Drag-and-Drop) ، اطلاعات OLE ، میانبرهای ویندوز(Shortcuts) ، و هسته اصلی واسط کاربری ویندوز (User Interface) میباشد.
HKEY_LOCAL_MACHINE: این شاخه شامل اطلاعاتی در مورد خصوصیات سیستم کامپیوتر از قبیل سخت افزار ، نرم افزار و دیگر مشخصه های کامپیوتر می باشد، که ان اطلاعات برای تمام کاربرانی که از سیستم استفاده می کنند یکسان می باشد.
HKEY_USERS: این شاخه محتوای اطلاعات انتخابات و تنظیمات مربوط به هر کاربر می باشد.هر کاربر یک SID در این شاخه دارد .
HKEY_CURRENT_CONFIG: این شاخه نیز به شاخه LOCAL_MACHINE اشاره میکند و در ارتباط میباشد و شامل پیکربندی سخت افزار سیستم می باشد.
HKEY_DYN_DATA: این شاخه نیز به شاخه HKEY_LOCAL_MACHINE اشاره می کند و برای استفاده از خاصیت PLUG & PLAY در ویندوز می باشد . این بخش پویا می باشد یعنی بر اساس هر وسیله یا دستگاه جانبی که به سیستم متصل می شود تغییر می کند.
پنج نوع متغیر نیز وجود دارد که هر کدام در زیر شرح داده شده اند:
REG_BINARY : این نوع متغیر داده نوع باینری خام را ذخیره می کند.اکثرا اطلاعات سخت افزار و اجزاء در این نوع متغیر ذخیره می شود و همچنین در ویرایشگر رجیستری ویندوز قابلیت نمایش این نوع متغیر به صورت هگزا دسیمال نیز وجود دارد.
REG_DWORD : این نوع متغیر برای نمایش داده های 4 بایتی و همچنین برای ذخیره کردن مقادیر منطقی درست یا غلط(TRUE OR FALSE) به کار میروند.بدین ترتیب که برای نمایش غلط ار عدد "0" و برای نمایش درست از "1" استفاده میشود . علاوه بر این برای نگهداری پارامترهای گرداننده ددستگاهها و سرویس دهنده ها از اسن نوع پارامتر لستفاده می کنند.و در REGEDT32 قابلیت نمایش به صورت باینری ،هگزا و دسیمال را دارد.
REG_EXPAND_SZ : این یک نوع متغیررشته ای فابل گسترش می باشد که نرم افزار ها جهت بعضی اعمال خود از این متغیر استفاده می کنند.برای مثال در ویندوز 2000 یاNT به جای عبارت %SYSTEM ROOT% با مقدار واقعی خود یعنی مسیر نصب ویندوز (مثلا C:WINDOWS) جایگزین می شود. باید توجه داشته باشید که این نوع متغیر فقط در ویرایشگرهای پیشرفته رجیستری از قبیل REGEDT32 قابل استفاده است.
REG_MULTI_SZ : این نوع متغیر رشته ای چند گانه می باشد که برای مقادیری که شامل یک لیست یا چندین مقدار میباشد به کار می رود که هر مقدار با کاراکتر NULL از بقیه جدا می شود. باید توجه داشته باشید که این نوع متغیر فقط در ویرایشگرهای پیشرفته رجیستری از قبیل REGEDT32 قابل استفاده است.
REG_SZ : این نوع متغیر رشته ای استاندارد می باشد که برای ذخیره کردن متن قابل خواندن توسط کاربر استفاده می شود.
انواع دیگر نوع داده که در ویرایشگرهای استاندارد قابل استفاده نیستند عبارتند از :
REG_DWORD_LITTLE_ENDIAN : که یک عدد 32 بیتی از نوع LITTLE_ENDIAN را می توانند در خود ذخیره کنند.
REG_DWORD_BIG_ENDIAN : که یک عدد 32 بیتی از نوع BIG_ENDIAN را می توانند در خود ذخیره کنند.
REG_LINK : که یک پیوند نماد ین یونیکد می باشد و به طور داخلی استفاده میشود و نرم افزارها قادر به استفاده کردن از آن نمی باشند.
REG_NONE : که نوع خاصی برای آن تعریف نشده است.
REG_QWORD : این نوع متغیر می تواند یک عدد 64 بیتی را در خود ذخیره کند.
REG_QWORD_LITTLE_ENDIAN : این نوع متغیر نیز می تواند یک عدد 64 بیتی با فرمت LITTLE_ENDIAN را در خود ذخیره کند .
REG_RESOURCE_LIST : لیست منبع گرداننده های دستگاه ها می باشد