رجیستری در VB.NET
شروع کار با رجیستری
مسلماً در یک برنامه کاربردی به کرات نیاز پیدا می شود که داده ای را در رجیستری نوشته و یا از رجیستری بخوانید . قبلاً در ویژوال بیسیک باید با استفاده از توابع API و پیاده سازی مقادیر نسبتاً حجیمی از کد این نیاز را برآورده می ساختید . اما در چهارچوب دات نت نیازی نیست اینگونه کار های پایه ای را خودتان انجام دهید . مایکروسافت این امکان را در قالب کلاس ها و توابع چهارچوب دات نت در اختیار شما قرار داده است.
برای شروع کار با رجیستری ابتدا فضای اسمی Microsoft.Win 32 را به برنامه اضافه کنید
Imports Microsoft.Win32
سپس یک متغیر به صورت زیر تعریف کنید
Dim Reg As RegistryKey
گشودن مسیر های مختلف رجیستری
برای گشودن شاخه های مختلف رجیستری باید از متد OpenSubKey فیلد های Registry استفاده کنید و مقدار برگشتی را به شیی از نوع RegistryKey نسبت دهید.
برای گشودن شاخه های مختلف رجیستری می توانید از فیلد های دیگری نیز استفاده کنید . لیست این فیلد ها به همراه مسیر مربوطه در رجیستری در لیست زیر آمده است.
مسیر در رجیستری فیلد مربوطه
ClassesRoot HKEY_CLASSES_ROOT
CurrentConfig HKEY_CURRENT_CONFIG
CurrentUser HKEY_CURRENT_USER
DynData HKEY_DYN_DATA
LocalMachine HKEY_LOCAL_MACHINE
PerformanceData HKEY_PERFORMANCE_DATA
Users HKEY_USERS
برای درک بهتر این عمل به مثال زیر توجه فرمایید :
("Reg = Registry.CurrentUser.OpenSubKey("Software\Microsoft\windows
بعد از آماده سازی شی مورد نظر از متد OpenSubKey استفاده کنید . این متد یک آرگومان می پذیرد که نام زیر شاخه مورد نظر است. شکل این متد به صورت زیر است:
(Reg.OpenSubKey(KeyName
صورت های متد OpenSubKey
Public Function OpenSubKey(ByVal name As String) As
Microsoft .Win32.RegistryKey
(Public Function OpenSubKey(ByVal name As String, ByVal writable As Boolean
As Microsoft.Win32.RegistryKey
name :نام زیر شاخه مورد نظر
writable : اگر این مقدار True باشد آنگاه شما قادر به نوشتن در زیر شاخه باز شده خواهید بود . در غیر اینصورت این اختیار را نخواهید داشت.
البته این متد 2 صورت دیگر نیز دارد که به علت رعایت مختصر بودن مقاله از آنها صرف نظر شده است .
خواندن اطلاعات از رجیستری
برای خواندن اطلاعات از یک ورودی در رجیستری می توانید ار متد GetValue استفاده کنید . این متد سه حالت مختلف دارد که دو حالت پر کاربرد را در زیر مشاهده می کنید.
Public Function GetValue(ByVal name As String) As
(Public Function GetValue(ByVal name As String, ByVal defaultValue As
As
name : نام کلید مورد نظر
defaultValue : مقدار پیش فرض (در صورت موجود نبودن ورودی مورد نظر تابع ایت مقدار را بر می گرداند)
نوشتن اطلاعات در رجیستری
به منظور نوشتن اطلاعات در رجیستری می توانید از متد SetValue استفاده کنید . صورن این متد به صورت زیر است.
(Public Sub SetValue(ByVal name As String, ByVal value As
name : نام کلید مورد نظر
Value : مقداری که باید در رجیستری نوشته شود .
بستن شی رجیستری
در هنگامی که به شی رجیستری نیازی نداشتید بهتر است آن را ببندید تا حافظه مورد استفاده توسط این شی آزاد شود . با استفاده از متد Close می توانید این شی را ببندید . صورت این متد به صورت زیر است.
()Reg.Close
چند مثال
یک تابع برای خواندن مقادیر از رجیستری
_ , Public Function GetValue(ByVal KeyPath As String
_ , ByVal KeyName As String
= Optional ByVal DefaultValue As String
_ (vbNullString
As
Dim Reg As RegistryKey
Try
(Reg = Registry.CurrentUser.OpenSubKey(KeyPath
(Return Reg.GetValue(KeyName, DefaultValue
()Reg .Close
Catch ex As Exception
!Could not read"
Return DefaultValue
()Reg .Close
End Try
End Function
یک تابع برای نوشتن مقادیر در رجیستری
_ , Public Sub SetValue(ByVal KeyPath As String
_ , ByVal KeyName As String
(ByVal Value As String
Dim Reg As RegistryKey
Try "create key if not exists
(Registry .CurrentUser.CreateSubKey(KeyPath
Catch : End Try
Try
(Reg = Registry.CurrentUser.OpenSubKey(KeyPath, True
(Reg .SetValue(KeyName, Value
()Reg .Close
Catch ex As Exception
!Could not write"
End Try
End Sub |