PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : چند نکته کوتاه در مورد رجستری



Magsoud
05-05-2012, 06:28 PM
بنام دوست

این تاپیک شرح کامل در مورد رجستری نبوده و صرفا" جوابی است کوتاه برای پرسشی که دوست ارجمندی
از این انجمن نیمه شب دیشب توسط پیام پرسید.و با توجه به دیر وقت بودن و اینکه نمی شد سوال را در یکی
دو جمله جواب داد، لذا در اینجا پاسخ عرض میکنم.

رجستری ویندوز نوعی database است که اطلاعات مربوط به هسته ویندوز ،تنظیمات و چگونگی کار سخت
افزار و نرم افزار های کامپیوتر و نیز اطلاعات مربوط به استفاده کننده یا استفاده کننده های (Users) کامپیوتر را
نگهداری میکند.
فایل های رجستری عملا" بصورت باینری در سیستم ذخیره شده اند.

در موارد مختلف ،هم برنامه ها و هم خود کاربر نیاز دارند که تنظیمات و اطلاعات موجود در رجستری را تغییراتی
بدهد.ولی بدیهی است که ما نمیتوانیم فایل های باینری را توسط برنامه های Text Editor مثل Notepad و نظایر
آن باز کرده و تغییر بدهیم.چون همانطور که عرض کردم فایل های رجستری بصورت باینری (سیستم دودویی)
ذخیره شده اند یعنی اگر این فایل ها را توسط برنامه های Text Editor باز کنیم فقط یک سری اعداد 0 و 1 خواهیم
دید که معلوم نیست چه هستند.
لذا بایستی توسط برنامه ای دیگر فایل های رجستری را باز کرده و تغییرات لازم را اعمال کنیم که ما در ویندوز از
برنامه Windows Registry Editor ( در حقیقت همان regedit.exe ) استفاده میکنیم.

این برنامه اطلاعات داخل فایل های رجستری را به شکلی به ما نشان میدهد که بتوانیم درک کنیم چکار میکنیم،
سپس تغییراتی را که ما به این برنامه می دهیم ، آنی به اطلاعات نوع باینری تبدیل و در رجستری ثبت می کند.
شاید بگویید نه ما فایل های رجستری را توسط Notepad باز میکنیم،ادیت میکنیم ووو...... ولی اینطور نیست شما
در حقیقت فایل های برنامه Windows Registry Editor را باز کرده و ادیت می کنید و فایل رجستری ای هم که توسط
شما ساخته میشود در حقیقت فایل هایی برای برنامه Windows Registry Editor می سازید که با اجرای فایل شما
برنامه فوق آن را از شما تحویل گرفته و به باینری تبدیل کرده و در رجستری ثبت میکند.

یک نکته: این برنامه، برنامه خیلی خوبی هست ولی یک اشکال بزرگ دارد و آن اینکه شما تا تنظیمی را عملا" اعمال
نکرده باشید نمیتوانید نتیجه را ببینید. لذا کوچکترین اشتباه در تنظیمات ، حتی میتواند سیستم شما را کاملا" از کار
بیندازد بطوریکه مجبور شوید ویندوز عوض کنید.

فایل های اصلی رجستری ویندوز که بصورت باینری در ویندوز ذخیره میشوند، بسته به نوع سیستم عاملی که مورد
استفاده شماست ، فرق میکنند ، نام های متفاوتی دارند و در جا های متفاوتی ذخیره میشوند.

برای مثال در ویندوز XP فایل های رجستری با نام های بدون پسوند Software ،System, SAM, Security, Default و
UserDiff در داخل پوشه Windows\System32\Config ذخیره میشوند (البته فایل های دیگری هم داریم که برای نمونه
به انواع زیر توجه شود).

Sam, Sam.log, Sam.sav
Security, Security.log, Security.sav
Software, Software.log, Software.sav
System, System.alt, System.log, System.sav
System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log
Default, Default.log, Default.sav

فایل های رجستری مربوط به هر کاربر ویندوز XP هم در محل پروفایل کاربر با نام NTuser.dat و غیره ذخیره میشود
( در داخل Documents and Settings folder ) که البته در این مبحث بحثی در مورد این ها نداشته و صرفا" جهت
آگاهی عنوان میشوند.

اما شرحی مختصر بر مشخصات فایل های رجستری نشان داده شده توسط Windows Registry Editor
----------------------------------------------------------------------------------------------------------------
وقتی رجستری را باز کنید معمولا" ترکیب زیر را خواهید دید:


HKEY_CLASSES_ROOT or HKCR
HKEY_CURRENT_USER or HKCU
HKEY_LOCAL_MACHINE or HKLM
HKEY_USERS or HKU
HKEY_CURRENT_CONFIG or HKCC
(البته بسته به نوع سیستم عامل مورد استفاده ممکن است یکی دو کلید دیگر هم وجود داشته باشد)

همانطور که می بینید چند بخش متفاوت داریم. هرکدام از این بخش ها را key یا Hive میگویند.
هر key خودش از چندین key ساخته شده که آن ها را Subkey میگویند و دوباره هر Subkey هم میتواند دارای یک
یا چند Subkey باشد.
شاید بتوانید key ها را همان پوشه حساب کرده و Subkey ها را همانند پوشه های داخلی در نظر بگیرید.

شرح مختصر key های نشان دتده شده دربالا بصورت زیر است:

(HKCR) اطلاعات مربوط به تنظیمات ظاهری مورد استفاده کاربر در اینجا نگهداری میشود.
(HKCU) اطلاعات و تنظیمات مربوط به کاربر استفاده کننده فعلی در این جا ذخیره میشود
(HKLM) مختصات و اطلاعات خود کامپیوتر در این جا نگهداری میشود.
(HKU) تمام اطلاعات مربوط به تمام کاربرانیکه از این کامپیوتر استفاده کرده اند
(HKCC) این کلید اطلاعات سخت افزاری کاربر وارد شده را دارد و یک جور هایی قسمتی از کلید HKLM میباشد.

کلید ها بصورت زیر در رجستری سازماندهی شده اند:
__ هر کلید یا دارای چند زیر کلید است و یا دارای مقدار (value)
__ هر زیر کلیدی هم یا دارای چند زیر کلید است و یا دارای مقدار و همینطور الی آخر.
__ این مقادیر (value ها) هستند که چکونگی تنظیمات و کار ویندوز را مشخص میکنند.یعنی بصورت دیگر، وقتی ما
تنظیماتی در ویندوز انجام میدهیم ، در حقیقت این value ها را داریم تغییر میدهیم.
__ فقط تعداد محدودی از انواع اطلاعات را میتوان بعنوان value در رجستری استفاده کرد، که معمول ترین آن ها
عبارتند از: binary ، strings و DWORD

برای درک بهتر مسئله به مثال زیر توجه فرمایید:
فرضا" HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main را در نظر بگیرید در اینجا:
عبارت HKEY_CURRENT_USER همان کلید اصلی ( یا Hive ) میباشد.
عبارت Software یک کلید است
عبارت Microsoft یک زیر کلید ( Subkey ) است
عبارات Internet Explorer و Main هر کدام یک زیر کلید دیگر هستند.

گفتم که ما موقع تغییرات در حقیقت داریم value را در رجستری تغییر میدهیم.اگر رجستری را باز کنیم و در سمت چپ
روی کلیدی کلیک کنیم. اگر به سمت راست پنجره رجستری نگاه کنیم دربالا سه تا عنوان خواهیم دید:
Name ، Type و Data
یعنی هر اطلاعاتیکه لازم است در این کلید یا زیر کلید قرار داده شود باید سه مشخصه داشته باشد. یعنی نامی داشته
باشد ( Name )، نوع اطلاعاتی که باید وارد کنیم ( Type ) ، مشخص باشد و اطلاعاتی که میخواهیم در رجستری ثبت
کنیم (Data ) ، را داشته باشیم.

تازه بعد از این مقدمه طولانی میرسیم به جاییکه میتوانیم به سوال دوست ارجمندمان پاسخ دهیم.
من بیشتر از این وارد بحث رجستری نمیشوم و صرفا" به پاسخ به دوست ارجمندم اکتفا میکنم که خواستار شرح انواع
Data بودند که میتوانیم در رجستری استفاده نماییم.
گفتیم که Data بیشتر انواع binary ، strings و DWORD استفاده میشوند و یا به صورتی دیگر:
REG_BINARY و REG_DWORD و REG_SZ

REG_BINARY > اطلاعات باینری در هر فرمت میباشد. معمولا" بصورت هایی شبیه 00 و 01 و غیره هستند.
REG_DWORD > اعداد 32 بیتی هستند معمولا" نتیجه 0 و یا 1 دارند ( 0x0000001 , 0x0000000 )
REG_SZ > معمولا" یک نوشته کوتاه متنی داشته و میتوانند 0 و 1 هم باشند ("True" or "False") .توجه داشته
داشته باشید که نوشته های اینجا با نوشته های دو نمونه دیگر بالا متفاوتند . بدین معنی که در اینجا بطور مخفیانه
یک عدد 0 به انتهای نوشته ما اضافه میشود که برای رجستری به این معنی است که نوشته این جا تمام شده است
ولی ما هیچوقت این عدد 0 را نخواهیم دید. در حالیکه در دو نوع بالا چیزی به اطلاعات نوشته شده اضافه نمیشود.
بصورت دیگر اگر ما اطلاعاتی یکسان را اینجا و مثلا" در نوع REG_DWORD بنویسیم از نظر خودمان این دو تا اطلاعات
یکی هستند ولی از نظر رجستری با هم فرق دارند. چون نوع REG_SZ یک 0 اضافه شده غیر قابل دید را هم اضافه دارد.

Ezaafi
05-06-2012, 01:39 AM
سلام
اول که تشکر کنم از جناب شیرین زبان صبور و دوست داشتنی. (صبور چون من یکی رو خوب تحمل میکنن! :d:)
دوم اینکه، اون کاربری که نیمه شب یادش افتاد از استادمون سوال بپرسه من بودم!! دیگه ببخشینم.
و در آخر بازم تشکر ویژه از استاد. خیلی مطالب مفیدی بود. منکه خیلی از رجیستری اطلاعی نداشتم، با اینا کلی چیز یاد گرفتم (البته میدونم که هنو مانده تا برف زمین آب شود!) گرچه این رجیستری کلاً خیلی واسم مبهمه.
و یه تشکر هم کنم از نیما، که یه مطلب درباره رجیستری نوشته بود و اونم خیلی بهم کمک کرد.
قربون همگی، ممد
اکه هی... اصل کاری رو یادم رفت!
ببخشین، پس اون سه نوع داده ای که داریم، میشن باینری، رشته ای و DWORD، درسته؟ خب یه کتاب رجیستری داشتم میخوندم که نوشته بود سه تا مقدار تو رجیستری هست: رشته ای یا DWORD، باینری یا Binary و مقدار String! همین کلی منو گیج کرد! اعتماد به نویسنده کتاب از مهمترین بخشهای کتاب خوندنه!!