PDA

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



آبجی
18th November 2009, 12:04 PM
اهمیتی که رجیستری در یک سیستم دارد ایجاب می نماید تا هر برنامه نویسی برای کارایی بهتر با آن آشنایی داشته باشد. در این فرصت در مورد چگونگی کار با رجیستری ویندوز در محیط VB.NET مطالبی عنوان خواهد شد. قبل از شروع آموزش در مورد ساختار رجیستری ویندوز توضیحات کوتاهی ارائه می شود.

آشنایی با رجیستری:
رجیستری وبندوز یك پایگاه داده با ساختار درخت واره است، كه از آن برای ذخیره و بازیابی تنظیمات پیكربندی های موجود در ویندوز 32 بیتی استفاده می شود. سلسله مراتب Registry از عناصر زیر تشکیل شده است:
1 ) HKEY_CLASSES_ROOT (HKCR)
HKCR اطلاعات مربوط به فایل را در خود نگه می دارد. به این ترتیب که چه نوع فایل هایی با چه نوع برنامه ای کار می کند. به عنوان مثال در این قسمت است که مشخص می شود فایل با پسوند txt با نرم افزار notepad باز می شود. HKCR تعاریف هر یک از اشیاء موجود در محیط ویندوز را نیز در خود نگه می دارد.
2 ) HKEY_CURRENT_USER (HKCU)
HKCU حاوی پروفایل کاربری است که در حال حاضر از ویندوز استفاده می کند. یک پروفایل سیستم، سخت افزار و سیستم های برنامه سفارشی سازی شده برای یک کاربر خاص را شامل می شود. تمامی این اطلاعات در یک Hive با نام USER.DAT ذخیره می شوند.
3 ) HKEY_LOCAL_MACHINE (HKLM)
HKLM ورودی های CPU، گذرگاه سیستم و سایر اطلاعات پیکربندی سخت افزاری به وسیله ویندوز در هنگام شروع ویندوز را شامل می شود.
4 ) HKEY_USERS (HKU)
HKU اطلاعات پروفایل برای کاربران محلی کامپیوتر را شامل می باشد. حداقل دو ورودی در HKU ظاهر می شود. اولین ورودی Default که حاوی گروه پیش فرض تنظیم ها که برای کاربرانی است که بدون پروفایل به سیستم وارد می شوند. دومین ورودی که آنرا همیشه در HKU مشاهده می کنید Administrator توکار است.
5 ) HKEY_CURRENT_CONFIG (HKCC)
HKCC اطلاعات مربوط به پروفایل سخت افزار در حال استفاده و اطلاعات وسیله ای که در خلال شروع ویندوز جمع آوری شده است را نگه می دارد.

هر کدام از این قسمتها شامل تعدادی زیر کلیدها و داده ها به صورت تودرتو و سلسله مراتبی هستند. اگر ساختار رجیستری ویندوز را با سیستم فایل آن مقایسه کنیم، کلیدها با فولدرها و داده ها با فایلها متناظر می شوند. همانطور که فولدرها برای دسته بندی فایلها به کار می روند، کلیدها هم برای دسته بندی داده های رجیستری استفاده می شوند. داده های رجیستری هم همانند فایلها حاوی اطلاعات مورد نیاز سیستم و یا کاربر هستند. هر کلید خود می تواند شامل چند زیر کلید باشد و . . .
با این معرفی اجمالی از رجیستری ویندوز شیوه کار با آن را توسط VB.NET توضیح می دهیم.

توجه:
قبل از هر تغییری در رجیستری ویندوز حتما از آن نسخه پشتیبان تهیه كنید. برای اینکار می توانید از نرم افزار Registry Editor - که به صورت رایگان همراه ویندوز نصب می شود - استفاده کنید.

آبجی
18th November 2009, 12:04 PM
شروع برنامه نویسی . . .
قبل از هر کاری باید متغیری از نوع رجیستری ویندوز تعریف کنیم:
Dim regKey As RegistryKey
کلاس RegistryKey مایکروسافت دات نت برای کار با رجیستری ویندوز طراحی شده است. این کلاس حاوی متدها و خصوصیاتی برای کار کردن راحت و بدون دردسر با رجیستری است.
1- ایجاد یک زیرکلید (Sub Key):
فرض کنید قصد داریم در قسمت Local_Machine رجیستری ویندوز و در زیرکلید Software یک کلید جدید با نام Mahdi ایجاد نمائیم. برای این کار ابتدا با متد OpenSubKey وارد کلید Software می شویم:
regKey = Registry.LocalMachine.OpenSubKey("Software", True)
پارامتر اول حاوی نام و مسیر کلید است. دومین پارامتر مشخص می کند که آیا امکان نوشتن در کلید (Writable) وجود داشته باشد یا نه. پس از این که وارد قسمت مورد نظر شدیم کلید مورد نظرمان را به کمک متد CreateSubKey ایجاد می نمائیم:
regKey.CreateSubKey("Mahdi")
و در پایان امکان دسترسی متغیر تعریف شده را به رجیستری با متد Close لغو می کنیم (این عمل متناظر با بستن فایل پس از خواندن اطلاعات از آن است).
regKey.Close()
2- ایجاد و مقدار دهی یک داده:
در این مرحله قصد داریم یک داده با مقدار رشته ای (String Value) ایجاد کرده، و به آن مقدار بدهیم. ابتدا زیرکلید مربوطه را باز می کنیم:
regKey = Registry.LocalMachine.OpenSubKey("Software\Mahdi", True)
از دستور زیر برای ایجاد داده رشته ای و مقداردهی آن استفاده می کنیم:
regKey.SetValue("Abbaspour", "Shahmersi")
regKey.Close()
دستور فوق یک مقدار رشته ای با نام Abbaspour و مقدار Shahmersi ایجاد می نماید! پارامتر اول متد SetValue نام داده (متناظر با اسم متغیر)، و پارامتر دوم مقدار آن را مشخص می کند. نوع این مقدار می تواند یکی از انواع استاندارد قابل قبول رجیستری ویندوز باشد (این نوع ها عبارتند از: String, Binary, DWORD, Multi-String, Expandable String). در صورتی که نام داده ذکر شده از قبل در کلید موجود باشد مقدار آن به مقدار جدید تغییر می کند.
3- خواندن مقدار یک داده:
برای خواندن مقدار یک داده رجیستری از متد GetValue استفاده می شود:
Dim Name As String
regKey = Registry.LocalMachine.OpenSubKey("Software\Mahdi", True)
Name = regKey.GetValue("Abbaspour").ToString()
regKey.Close()
این متد نام داده را دریافت کرده و مقدار آن را به صورت یک شیء (Object) باز می گرداند. در صورتی که داده عنوان شده موجود نباشد تهی (در وی بی دات نت Nothing) به عنوان نتیجه برگشت داده می شود.
4- حذف یک زیرکلید:
برای حذف یکی زیرکلید از متد DeleteSubKey به صورت زیر استفاده می کنیم:
regKey = Registry.LocalMachine.OpenSubKey("Software", True)
regKey.DeleteSubKey("Mahdi", False)
regKey.Close()
پارامتر اول متد نام زیرکلید را مشخص می کند. با False قرار دادن پارامتر دوم در صورتی که زیر کلید عنوان شده موجود نباشد برنامه بدون ایجاد خطا به کار خود ادامه می دهد. اگر از True استفاده می کردیم و زیرکلید هم وجود نداشت، یک استثناء (Exception) تولید می شد.

هر کدام از متدهای فوق چندین نسخه سربارگذاری شده (Overloaded) دیگر نیز دارند. علاوه بر اینها متدها و خصوصیتهای بسیار دیگری نیز برای کار با رجیستری ویندوز در کلاس RegistryKey دات نت موجود هستند. برای آشنا شدن با این متدها و اطلاعات بیشتر ما MSDN مایکروسافت را برای مطالعه پیشنهاد می کنیم.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد