دستیابی به رجیستری در VB.NET


سلام.
این مقاله در راستای جلوگیری از ایجاد تاپیک های بی مورد بوجود آمده است. امید است کاربران قبل از ارسال تاپیک با مطالعه ی اینگونه مقاله ها مشکلات خود را بر طرف کنند و اگر در جایی مسئله ای برایشان پیش آمد آن وقت تاپیک بزنند.

این مقاله به بررسی چگونگی دستیابی به رجیستری در ویژوال بیسیک دات نت می پردازد. رجیستری ویندوز یکی از پرکاربرد ترین مباحث در برنامه نویسی استاندارد ویندوز میباشد که اکثر برنامه‌های موجود از این امکان بهره میبرند. برای مثال می توان از رجیستری برای نگهداری آخرین تغییرات داده شده در برنامه و یا ذخیره تنظیماتی که کاربر در برنامه اعمال کرده است استفاده کرد. در NET. از دو کلاس Registry و RegistryKey برای دسترسی به رجیستری و داده‌های موجود در آن استفاده میشود.

هر ورودی در رجیستری ویندوز شامل دو قسمت میشود: نام مقدار (Value Name) و مقدار (Value). این ورودی‌ها در در کلیدها و زیرکلیدهای رجیستری ذخیره میشوند که از این لحاظ میتوان آنها را با فایلهایی مقایسه کرد که در فهرستها و زیر فهرستها قرار میگیرند.

دستیابی به رجیستری به وسیله توابع Visual Basic .NET
ویژوال بیسیک دات نت چهار تابع را برای کار با رجیستری معرفی میکند که برای استفاده از آنها شما باید اجازه خواندن و نوشتن، یعنی دسترسی RegistryPermissionAccess را داشته باشید. برای اطلاعات بیشتر در این مورد به کلاس RegistryPermission رجوع کنید. در زیر اطلاعاتی را در مورد این توابع مشاهده میکنید:

DeleteSetting : یک ناحیه یا یک کلید که شامل اطلاعات ورودی از برنامه در رجیستری است را حذف میکند.

GetSetting : مقدار یک کلید که شامل اطلاعات ورودی از برنامه در رجیستری است را برمیگرداند.

GetAllSettings : یک لسیت از کلیدها و ارزش آنها که شامل اطلاعات ورودی از برنامه در رجیستری است را برمیگرداند.

SaveSetting : اطلاعات برنامه را در رجیستری ذخیره میکند.

نکته: : اطلاعات یک ناحیه نمیتواند توسط تابع GetSetting برگردانده شود.

مثال زیر یک کلید و دو زیر کلید در رجیستری میسازد، ارزش کلید اول و ارزش دو زیر کلید آنرا را چاپ میکند سپس دومین زیر کلید را حذف و مقدار کلید اول و زیر کلیدهایش را چاپ میکند تا حذف زیر کلید دوم تایید شود:
کد:

' Create the first key.
SaveSetting("TestApp","Startup", "FirstKey", "First")

' Create the first subkey.
SaveSetting("TestApp","FirstKey", "FirstSubKey", "FirstSub")

' Create the second subkey.
SaveSetting("TestApp","FirstKey", "SecondSubKey", "SecondSub")

Try
' Write the first key's value.
Console.WriteLine((GetSetting("TestApp", "Startup", "FirstKey"))

' Write the first key as well as its two subkeys.
Console.WriteLine(GetAllSettings("TestApp", "Startup"))

Catch e As ArgumentException
Catch e As Exception
Console.WriteLine(e.GetType.ToString)
End Try

DeleteSetting("TestApp", "FirstKey", "SecondSubKey")

Try
Console.WriteLine(GetSetting("TestApp", "Startup", "FirstKey"))
Console.WriteLine(GetAllSettings("TestApp", "Startup"))

Catch e As ArgumentException
Catch e As Exception
Console.WriteLine(e.GetType.ToString)
End Try


توجه داشته باشید که استفاده از این توابع با محدودیتهایی همراه است. شما تنها میتوانید به کلیدهای رجیستری در محدوده HKEY_CURRENT_USERSoftwareVB and VBA Program Settings دسترسی داشته باشید و همچنین به علت استفاده از کلید HKEY_CURRENT_USER شما حتما باید با نام کاربری معتبر به سیستم وارد شده باشید.

دستیابی به رجیستری توسط NET Framework.
همانطور که مشاهده کردید استفاده از توابع فوق با محدودیتهایی همراه است. NET Framework. برای حل این مشکل دو کلاس Registry و RegistryKey را معرفی میکند که این دو کلاس در فضانام Microsoft.Win32 قرار دارند. کلاس Registry کلیدهای پایه‌ای زیر را فراهم میکند که توسط آنها میتوان به زیر کلیدها و مقادیر آنها دسترسی داشت. خود این کلیدهای اصلی فقط خواندنی هستند. جدول زیر این هفت کلید را نشان میدهد:

نام کلید : توضیحات

ClassesRoot : معرف پسوندهای فایها و انواع اسناد موجود در سیستم به همراه خصوصیات مربوط به آنها.

CurrentConfig : اطلاعات مربوط به سخت افزار که مربوط به کاربر مشخصی نیست.

CurrentUser : اطلاعاتی مربوط به کاربر حاضر مانند تنظیمات محیط کار کاربر.

DynData : شامل اطلاعات پویای رجیستری که برای راه اندازهای دستگاه مجازی بکار میرود.

LocalMachine : شامل پنج زیر کلید (Hardware ،SAM ،Security ،Software و System) که تنظیمات مربوط به سیستم را نگه میدارند.

PerformanceData : شامل اطلاعات اجرایی مربوط به نرم افزارها.

Users : شامل اطلاعات مربوط به اولویتهای پیش فرض کاربر.

مثال زیر نشان میدهد که چگونه یک مقدار DWORD را از کلید HKEY_CURRENT_USER بخوانیم:
کد:

Imports Microsoft.Win32

Dim regVersion As RegistryKey
Dim keyValue As String
Dim intVersion As Integer = 0

keyValue = "SoftwareMicrosoftTestApp1.0"
regVersion = Registry.CurrentUser.OpenSubKey(keyValue, False)

If (Not regVersion Is Nothing) Then
intVersion = regVersion.GetValue("Version", 0)
regVersion.Close()
End If


مثال زیر یک مقدار DWORD را خوانده، یک واحد به آن اضافه کرده و سپس آنرا چاپ میکند:
کد:

Imports Microsoft.Win32

Dim keyValue As String
Dim regVersion As RegistryKey
Dim intVersion As Integer = 0

keyValue = "SoftwareMicrosoftTestApp1.0"
regVersion = Registry.CurrentUser.OpenSubKey(keyValue, True)

If regVersion Is Nothing Then
' Key doesn't exist; create it.
regVersion = Registry.CurrentUser.CreateSubKey(keyValue)
End If

If (Not regVersion Is Nothing) Then
intVersion = regVersion.GetValue("Version", 0)
intVersion = intVersion + 1
regVersion.SetValue("Version", intVersion)
regVersion.Close()
End If


مطابق مثال بالا، برای دسترسی به یک کلید ابتدا متغیری از نوع RegistryKey تعریف میکنیم. سپس با استفاده از متد OpenSubKey آدرس کلید مورد نظر را داده تا کلید فوق برای خواندن آماده باشد. اگر پارامتر دوم این کلید برابر True باشد اجازه نوشتن بر روی آن کلید را نیز داریم. برای ساختن یک کلید نیز باید از متد CreateSubKey استفاده کرد. پس از ساختن و یا باز کردن یک کلید رجیستری، با استفاده از دو تابع GetValue و SetValue میتوان مقادیری را در آن کلید نوشت و یا از آن کلید خواند.

توسط رجیستری کارهای بسیار زیادی میتوان انجام داد. شما نیز با کمی تمرین میتوانید برنامه های استاندارد و جالبی را طراحی کنید. در پایان امیدوارم که دوستان قبل از ارائه سوالاتی در این مورد ابتدا این مقاله ها را مطالعه کنند و اگر مشکلی داشتند تاپیک جداگانه بزنند.
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد