احتمالا تاکنون مطالب زیادی در مورد رجیستری ویندوز شنیدهاید. اما آیا تابحال فکر کردهاید که چگونه میتوانید از این ویژگی ویندوز در برنامههای خودتان استفاده کنید؟
این مقاله به بررسی چگونگی دستیابی به رجیستری در ویژوال بیسیک دات نت می پردازد. رجیستری ویندوز یکی از پرکاربرد ترین مباحث در برنامه نویسی استاندارد ویندوز میباشد که اکثر برنامههای موجود از این امکان بهره میبرند. برای مثال می توان از رجیستری برای نگهداری آخرین تغییرات داده شده در برنامه و یا ذخیره تنظیماتی که کاربر در برنامه اعمال کرده است استفاده کرد. در 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_USER\Software\VB and VBA Program Settings دسترسی داشته باشید و همچنین به علت استفاده از کلید HKEY_CURRENT_USER شما حتما باید با نام کاربری معتبر به سیستم وارد شده باشید.
دستیابی به رجیستری توسط NET Framework.
همانطور که مشاهده کردید استفاده از توابع فوق با محدودیتهایی همراه است. NET Framework. برای حل این مشکل دو کلاس Registry و RegistryKey را معرفی میکند که این دو کلاس در فضانام Microsoft.Win32 قرار دارند. کلاس Registry کلیدهای پایهای زیر را فراهم میکند که توسط آنها میتوان به زیر کلیدها و مقادیر آنها دسترسی داشت. خود این کلیدهای اصلی فقط خواندنی هستند. جدول زیر این هفت کلید را نشان میدهد:
نام کلید توضیحات
ClassesRoot معرف پسوندهای فایها و انواع اسناد موجود در سیستم به همراه خصوصیات مربوط به آنها.
CurrentConfig اطلاعات مربوط به سخت افزار که مربوط به کاربر مشخصی نیست.
CurrentUser اطلاعاتی مربوط به کاربر حاضر مانند تنظیمات محیط کار کاربر.
DynData شامل اطلاعات پویای رجیستری که برای راه اندازهای دستگاه مجازی بکار میرود.