رجیستری ویندوز

**رجیستری ویندوز**  یک پایگاه‌داده سلسله‌مرتبی است، که «تنظیم‌های سطح پایین» را برای خود سیستم‌عامل مایکروسافت ویندوز و نیز برنامه‌های کاربردی استفاده‌کننده از رجیستری (یا **دفتر ثبت**) ذخیره‌سازی می‌کند. هسته، درایور دستگاه، خدمات، مدیر حساب‌های امنیتی، و دیگر واسط‌های کاربری همه‌شان امکان استفاده از رجیستری را دارند. رجیستری همچنین امکان دسترسی به شمارنده‌ها را برای رخ‌نمانگاری کارایی سامانه می‌دهد.

به زبان دیگر، رجیستری یا ویندوز شامل «اطلاعات، تنظیمات، گزینه‌ها»، و دیگر مقادیر برای برنامه‌ها و سخت‌افزاری است که روی همه نسخه‌های سیستم‌عامل مایکروسافت ویندوز نصب شده‌اند. برای مثال، موقعی که یک برنامه نصب می‌شود، یک «**زیرکلید**» جدید شامل تنظیماتی مثل محل برنامه، ورژن آن، نحوه شروع آن برنامه، و غیره به رجیستری ویندوز اضافه می‌شود.

رجیستری در ویندوز ۳٫۱ معرفی شد، و در آن زمان رجیستری ویندوز، در اصل فقط اطلاعات پیکربندی را برای مولفه‌های مبتنی بر COM ذخیره می‌کرد. اما ویندوز ۹۵ و ویندوز NT استفاده از آن را گسترش دادند و برای منطقی‌سازی و متمرکزسازی اطلاعات موجود در فایل‌های INI که بسیار فراوان هم بودند، آن را به کار بردند. این فایل‌های INI اطلاعات پیکربندی را برای برنامه‌های منفرد (که در مکان‌های متنوعی ذخیره شده بودند) نگهداری می‌کردند. لزومی ندارد که برنامه‌های کاربردی ویندوز حتماً از رجیستری ویندوز استفاده کنند. برای مثال، برنامه‌های کاربردی چارچوب دات‌نت از فایل‌های XML برای پیکربندی استفاده می‌کنند، درحالی‌که برنامه‌های انتقال‌پذیر معمولاً فایل‌های پیکربندی‌شان را همراه با اجراپذیرشان ذخیره می‌کنند.

رجیستری ویندوز جایی است که تنظیمات نرم‌افزارها و سخت‌افزارها در سیستم‌عامل ویندوز در آن به ثبت می‌رسند. در پنجمین ویراست از کتاب «فرهنگ رایانه‌ای مایکروسافت» دربارهٔ رجیستری چنین آمده‌است:

رجیستری، یکی از مهم‌ترین و اصلی‌ترین بخش‌های سیستم‌عامل ویندوز است. این بخش، نقشی کلیدی در پیکربندی و کنترل سیستم‌عامل ویندوز ایفا کرده و همچون انباره‌ای است که تنظیمات کلیِ سیستم (اعم از نرم‌افزاری و سخت‌افزاری) و تنظیمات خاصِ هر کاربر را در خود جای می‌دهد. نقش این بخش در ویندوز چنان است که تغییر در آن، تأثیرات بنیادینی بر عملکرد کل این سیستم‌عامل خواهد داشت. به خاطر همین اهمیت و حساسیت، رجیستری از دید و دسترسی کاربران عادی به دور نگاه داشته می‌شود. اما کاربر خبره می‌تواند از طریق ابزارهای تعبیه شده در ویندوز - نظیر regedit.exe - مستقیماً در محتوای رجیستری، دخل و تصرف کند.

## تاریخچه
ام اس داس داده‌های پیکربندی خود را از طریق فایل‌های confing.sys و autoexec.bat به دست می‌آورد و در ویندوز ۳٫۰ میکروسافت محدودیت‌های confing.sys و autoexec.bat را تا اندازه‌ای با ارائه فایل‌های INI برای ذخیره‌سازی تنظیمات بر طرف نمود.
فایل‌های INI فایل‌هایی متنی هستند که از یک یا چند بخش تشکیل می‌شوند و یک یا چند مورد از تنظیمات در هر بخش قرار می‌گیرد. مشکل فایل‌های INI آن است که فاقد ساختار سلسله مراتبی می‌باشند، ذخیره‌سازی فایل‌های باینری در آن دشوار بوده و هیچ گونه استانداردی برای ذخیره‌سازی انواع تنظیمات مشابه ارائه نمی‌کنند.
مشکل بزرگ‌تر فایل‌های INI و نگارشهای اولیه ویندوز تعداد زیاد این فایل‌ها در کامپیوترها بود. هر برنامه کاربردی فایل‌های INI خاص خود داشت.
ویندوز ۳٫۱ رجیستری را به عنوان ابزاری برای ذخیره‌سازی تنظیمات OLE (گنجاندن و مرتبط کردن شیئ‌ها) معرفی نمود، و ویندوزهای ۹۵ وnt 3.5 نیز آن را به بانک اطلاعاتی پیکربندی گسترش دادند که ویندوز xp و نسخه‌های جدیدتر ویندوز از آن استفاده می‌کنند.
اگرچه فایل‌های INI دیگر به دلیل آن که برنامه‌های کاربردی روش بسیار بهتری برای ذخبره‌سازی تنظیمات دارند، ضروری نیستند، اما هنوز هم تعدادی از آن‌ها را در برخی کامپیوترها خواهید یافت، مثلاً win.ini.

## رجیستری در عمل
در حالت کلی، داده‌های مندرج در رجیستری، در سه وضعیت یا مرحله خوانده می‌شوند:
* بوت‌شدن سیستم
:سیستم، فهرست درایورهای لازم جهت بارگذاریِ سخت‌افزارها و نحوهٔ پیکربندی بخش‌های زیرسیستمی (مثل مدیر حافظه و مدیر پردازش) را از رجیستری می‌خواند.
* ورود به ویندوز
:برنامهٔ Explorer و سایر اجزای ویندوز، تنظیمات مربوط به هر کاربر را از رجیستری می‌خوانند، از قبیل: راهنمای درایوهای سیستم و شبکه و حروفِ مُعرفِ آنها، تصویر پس زمینهٔ میزکار، محافظِ صفحه‌نمایش، وضعیت منوها و مکان آیکونها.
* آغاز به کار برنامه‌های کاربردی
:هر برنامه، تنظیمات کلیِ سیستم (مثل فهرست اجزای نصب شدهٔ اختیاری و داده‌های پروانهٔ بهره‌برداری از برنامه) و تنظیمات مخصوصِ کاربر فعلی (مثل مکان منوها، نوار ابزار، و فهرست مستنداتی که اخیراً مورد دسترسی قرار گرفته‌اند) را از رجیستری می‌خواند.

البته رجیستری ممکن است در وضعیتهای دیگری هم خوانده شود، مثل زمانی که تغییراتی در یکی از مقادیر یا کلیدهای رجیستری لازم باشد (در ادامه این مقاله، دربارهٔ اصطلاحات کلید و مقدار توضیح داده خواهد شد). برخی از برنامه‌ها هم، مرتباً محتوای رجیستری را بررسی می‌کنند تا در صورت بروز تغییر در آن، سریعاً پیکربندیهای خود را روزآمد و به هنگام کنند. اما به‌طور کلی، در یک سیستم که در حالت بیکاری (Idle) قرار دارد، فعالیتی در رجیستری به چشم نمی‌خورد.

معمولاً محتوای رجیستری در موارد زیر تغییر می‌کند:
* نصب نرم‌افزار
:روال‌هایی که به نام Setup مشهور بوده و وظیفهٔ آن‌ها نصب نرم‌افزارهای جدید بر روی رایانه است، تنظیمات پیش‌فرضِ هر برنامه را در خلال عملیات نصبِ آن، در رجیستری ثبت می‌کنند.
* نصب راه انداز سخت‌افزار
:در حین نصب راه اندازِ یک دستگاه، بخشِ موسوم به Plug & Play، تنظیمات مربوط به دستگاه را در رجیستری ثبت می‌کند. این تنظیمات، نحوهٔ آغاز به کار و عملکرد دستگاه را برای «مدیر I/O» مشخص خواهند کرد.
* با تغییرات کاربر
:هنگامی که کاربر، تنظیمات مربوط به یک برنامه یا کلِ سیستم را از طریق «کنترل پانل» تغییر می‌دهد، تنظیمات جدید در رجیستری به ثبت می‌رسند.

یکی دیگر از راه‌های تغییر در رجیستری، ویرایش دستی آن از طریق برنامهٔ Registry Editor است. این برنامه که یکی از ابزارهای سیستمی تعبیه‌شده در خودِ ویندوز است، امکان ویرایش مستقیمِ رجیستری را برای مدیر سیستم (System Administrator) فراهم می‌کند. البته باید توجه داشت که عملکرد این ویرایشگر با ویرایشگرهای متن متفاوت است و مثلاً امکان انجام عمل واگرد (Undo) در آن وجود ندارد. به همین دلیل، در به‌کارگیری و استفاده از آن باید محتاط بود، چرا که هرگونه دستکاریِ ناشیانه در رجیستری، می‌تواند به مختل شدن عملکرد کل سیستم بینجامد. از این رو، همیشه توصیه می‌شود که پیش از شروع عملِ ویرایش، یک کپی پشتیبان از رجیستری تهیه شود.

## ساختار رجیستری
ساختار رجیستری، شباهت زیادی به ساختارِ منطقیِ یک دیسک دارد؛ رجیستری، شامل چندین کلید (Key) است که مفهوم آن‌ها مشابه دایرکتوری در دیسک بوده و هر کلید هم، شامل چندین مقدار (Value) است که مثل فایل‌هایی درون دایرکتوری‌ها قرار دارند. مقادیر که در واقع خانه‌هایی برای نگهداری داده‌ها هستند، از سه مؤلفه تشکیل می‌شوند: نام، نوع و داده.

هر کلید می‌تواند شامل تعدادی کلید دیگر هم باشد که در این صورت به آن‌ها زیر-کلید (Sub-key) گفته می‌شود. زیر-کلیدها هم به نوبهٔ خود می‌توانند شامل زیر-کلیدهای دیگری باشد و الخ کلیدهایی که در بالاترین سطح قرار دارند، ریشه (Root) خوانده می‌شوند؛ بنابراین، بجز ریشه‌ها، تمام کلیدهای دیگر را می‌توان زیر-کلید به حساب آورد.

نمایی از ساختار منطقی رجیستری در برنامهٔ Registry Editor

همان‌طور که از تصویر فوق پیداست، هر زیر-کلید دارای یک مقدار به نام (Default) است که به صورت پیش‌فرض، داده‌ای درون آن قرار ندارد (value not set).

ساختار سلسله مراتبی رجیستری، شباهت فراوانی به ساختار «درخت» دارد. در ادبیات علم رایانه، منظور از درخت، نوعی ساختار دادهٔ پویا (دینامیک) است که شرح و وصف آن در مبحث «ساختمان داده‌ها» ذکر می‌شود. در اینجا به ذکر همین نکته بسنده می‌کنیم که رجیستری شامل چندین درخت است که گره‌های آن‌ها حاوی کلید و برگ‌های آن‌ها حامل مقدار هستند.

گفتنی است ساختار اولیهٔ رجیستری که به صورت یک پیش‌الگو (Prototype) تدوین شده و شامل یک سِری تنظیمات اولیه و پیش‌فرض است که همراه با خودِ ویندوز و در خلالِ عملیاتِ نصبِ سیستم‌عامل، بر روی دیسک‌سخت کپی می‌شود.

## کلیدهای ریشه
در رجیستری، به صورت از پیش تعریف شده، پنج کلید ریشه وجود دارد. نام کلیدهای ریشه با کلمهٔ HKEY شروع می‌شود که خلاصهٔ عبارت «Handle to a KEY» است. هر ریشه، یک مجموعهٔ تودرتو (Nested) از کلیدها را در خود جای می‌دهد. ضمناً تعداد ریشه‌ها، ثابت است؛ بدین معنا که نه می‌توان ریشهٔ جدیدی ایجاد کرد و نه ریشهٔ موجودی را حذف کرد.

فهرست کلیدهای ریشه در رجیستری و محتوای آنها:
* **HKEY_CURRENT_USER**: شامل تنظیمات خاص کاربر مربوط به account کاربر کنسول (کاربری که در حال حاضر با صفحه کلید کار می‌کند) است. این شاخه شامل متغییرهای محیطی، تنظیمات دسک تاپ، اتصالات شبکه، چاپگرها و موارد ترجیهی برنامه‌های کاربردی است.
* **HKEY_USERS**: تعیین‌کننده شناسه امنیت کاربران و خط مشی‌های تعیین شده برای آنها.
* **HKEY_LOCAL_MACHINE**: شامل تنظیمات خاص کامپیوتر است و این بدین معناست که تنظیمات این شاخه به پیکربندی کامپیوتر اعمال شده و بر هر کاربری که با آن ارتباط برقرار نماید تأ ثیر می‌گذارند. محدوده این تنظیمات از پیکربندی‌های نرم‌افزارهای راه اندازی گرفته تا تنظیمات ویندوز می‌باشد.
* **HKEY_CLASSES_ROOT**: بزرگترین کلید موجود در رجیستری است که شامل دو دسته تنظیمات می‌شود. نخستین دسته، ارتباط فایل هاست که انواع مختلف فایل‌ها را با برنامه‌هایی مرتبط می‌کند که می‌توانند آن‌ها را باز، چاپ و ویرایش نمایند. دسته بعد ثبت کلاس‌ها برای شیئ‌های com است. امکان تغییر بسیاری از رفتارهای سیستم‌عامل را فراهم می‌کند.
* **HKEY_CURRENT_CONFIG**: نوعی ارتباط با داده‌های پیکربندی برای پروفایل سخت‌افزاری جاری می‌باشد.

## زیرکلیدهای مهم HKEY_CURRENT_USER
* **AppEvents**- صداها را با رویدادها ی متناظرشان مرتبط می‌کند. به عنوان مثال، صداها را با رویدادهایی چون بازشدن منوها؛ کمینه شدن پنجره‌ها و قطع ارتباط با ویندوز مرتبط می‌کند.
* **Console** – داده‌ها برای زیر سیستم کنسول ذخیره می‌کند. زیر سیستم کنسول میزبانی تمام برنامه‌های کاربری مد کاراکتر، از جمله فرمان‌ها ام اس داس را بر عهده دارد. این کلید همچنین می‌تواند زیر کلیدهایی برای پنجره‌های شخصی داشته باشد.
* **ControlPanel**- شامل تنظیمات قابلیت‌های توانمندی، منطقه‌ای و شِمای ظاهری دسک تاپ است. بیشتر این تنظیمات در کنترل پانل پیکربندی می‌شوند. اما این کلید شامل تنظیمات پیکربندی زیادی است که فاقد رابط کاربری هستند. آن‌ها را تنها از طریق رجیستری می‌توانید پیکربندی کنید.
* **Enviroment**- متغییرهای محیطی را نگهداری می‌کند که کاربران تعیین کرده‌اند. هر مقدار، یک متغیر محیطی را با رشته‌ای مرتبط می‌کند که ویندوز جایگزین آن را تتغیر می‌دهد. مقادیر پیش‌فرض این موارد در پروفایل کاربر قرار دارند.
* **Identities**- یک زیر کلید برای هر یک از هویت‌های شناسایی در اوت لوکس اکسپرس دارد. اوت لوکس اکسپرس با هویت‌های شناسایی به چندین کاربر امکان می‌دهد تا یک سرویس گیرنده پستی را به اشتراک بگذارند. با وجود پشتیبانی ویندوز xp به بعد از پروفایل‌های کاربری، تنظیمات هر کاربر از تنظیمات کاربران دیگر جدا می‌شود، بنابراین کلید ذکرشده به ندرت لازم می‌شود.
* **Keyboard Layout**- شامل اطلاعاتی در مورد طرح صفحه کلیدهای نصب شده‌است.
* **Printer**- تنظیمات ترجیحی کاربر در خصوص چاپگرها را نگهداری می‌کند.
* **Software**- شامل تنظیمات خاص کاربر مربوط به برنامه‌های کاربردی است. ویندوز xp بیشتر داده‌های پیکربندی خود را نیز در این کلید ذخیره می‌کند. میکروسافت ساختار سازمانی این کلید را استاندارد نموده‌است تا برنامه‌ها تنظیمات را در HKCU\SOFTWARE\vendor\program\version ذخیره کنند. Vendor، نام پدید آورنده برنامه، program، نام برنامه، version، نیز شماره نگارش برنامه است. Version در اغلب اوقات صرفاً current version است. این مطلب در خصوص ویندوز xp صادق است.

## زیر کلیدهای مهم HKEY - USER
کلید HKEY_USER حد اقل شامل سه زیر کلید است:
* **DEFAULT** – در بر گیرنده تنظیمات «خاص – کاربر» است که ویندوز XP و به بعد از آن برای نمایش دسک تاپ پیش از برقراری ارتباط کاربران (هر کاربری) استفاده می‌کند. این تنظیمات با پروفایل کاربری پیش‌فرض تفاوت دارند. ویندوز از پروفایل مذکور برای ایجاد تنظیمات کاربران برای نخستین مرتبه‌ای که با کامپیوتر ارتباط برقرار می‌کنند، استفاده می‌کند.
* **SID**- شامل تنظیمات خاص کاربر است. منظور از SID، شناسه امنیت کاربر کنسول است. منظور از کاربر کنسول، کاربری است که از صفحه کلید استفاده می‌کند. HKCU، نوعی ارتباط با این کلید است. این کلید شامل تنطیمات کنترل پانل و موارد مورد علاقه کاربر در دسکتاپ است.
* **SID _ classes** – شامل محدودیت‌های کلاس‌ها و ارتباط فایل هاست و خاص کاربر می‌باشد. ویندوز محتوای کلیدهای HKLM\SOFTWARE\Classes و HKU\SID-Classes را ادغام کرده و در کلید HKCR نگه می‌دارد.

## زیر کلیدهای مهم HKEY_LOCAL_MACHINE
* **HARDWARE**- داده‌هایی را ذخیره می‌کند که توصیف‌کننده سخت‌افزاری است که ویندوز XP در ابتدا ی کار شناسایی می‌کند. سیستم‌عامل این کلید را هر بار به هنگام آغاز کار ایجاد می‌کند و شامل اطلاعاتی دربارهٔ وسایل سخت‌افزاری و نرم‌افزارهای راه اندازی ومنابع مرتبط با آنهاست. این کلید شامل اطلاعاتی است که به هنگام کار با شبکه برای متخصصان IT مفید واقع می‌شود.
* **Sam** –شامل بانک اطلاعاتی امنیت محلی ویندوز xp یا(security accounts manager) است. ویندوز کاربران و گروه‌های محلی را در sam ذخیره می‌کند. فهرست کنترل دستیابی(ACL) این کلید حتی به مدیران نیز امکان مشاهده نمی‌دهد.SAM نوعی ارتباط با کلید HKLM\SECURITY\SAM است.
* **Security** – شامل بانک اطلاعاتی امنیت محلی ویندوز در زیر کلید sam، و نیز سایر تنظیمات امنیتی است. ACL این کلید حتی به مدیران نیز امکان مشاهده نمی‌دهد مگر آنکه مالکیت آن را بر عهده بگیرند.
* **Software** – شامل تنظیمات خاص کامپیوتر مربوط به برنامه‌های کاربردی است. ویندوز xp تنظیمات را نیز در این کلید ذخیره می‌کند. میکروسافت ساختار سازمانی این کلید را استاندارد کرده تا برنامه‌ها تنظیمات را در HKLM\SOFTWARE\VENDOR\PROGRAM\VERSION ذخیره کنند. Vendor، نام پدید آورنده برنامه، program، نام برنامه، version، نیز شماره نگارش برنامه است. Version در اغلب اوقات صرفاً current version است. این مطلب در خصوص ویندوز xp صادق است. HKCR نوعی ارتباط با کلید HKLM\SOFTWARE\CLASS است.
* **System** – شامل مجموعه‌های کنترلی است، که یکی از آن‌ها current می‌باشد. مابقی مجموعه‌ها برای استفاده ویندوز است. هر زیز کلید یک مجموعه کنترلی به نام CONYROL SETNNN است که NNN یک شماره سریال است که با ۰۰۱ شروع می‌شود. سیستم‌عامل حداقل دو مجموعه کنترلی دارد تا تضمین نماید که همیشه می‌تواند به درستی راه اندازی شود. این مجموعه شامل پیکربندی سرویس‌ها ونرم‌افزارهای راه اندازی است. HKLM\SYSTEM\CURRENY CONTROL SET نوعی ارتباط با CONTROL SETNNN است، وکلید HKLM\SYSTEM\SELECT نشان می‌دهد که CONTROL SETNNN در دست استفاده است.

## پانویس

## منابع

* 

* 

## پیوندهای بیرونی

* Windows Registry info & reference in the MSDN Library

رده:اجزای ویندوز
رده:پرونده پیکربندی