در این آموزش به شما شش روش کار با رجیستری را آموزش خواهیم داد که عبارتند از:
- افزودن یک کلید رجیستری یا یک متغیر در آن
- خواندن یک رجیستری
- حذف رجیستری
- تغییر در رجیستری
- بدست آوردن تعداد کل رجیستری ها در ویندوز (کلید و متغیر)
- بررسی موجود بودن یک رجیستری
پروژه: ساختن یک برنامه همانند Registry Editor
مقدمه
قبل از آموزش باید مقدمه ای بر رجیستری را فرا بگیرید که برای اینکار به لینک زیر مراجعه فرمایید.
در ویژوال بیسیک از یک تابع برای رجیستری استفاده می کنیم که در زیر آورده شده است:
1 |
My.Computer.Registry |
که می توان آن را به صورت های زیر کد نویسی کرد:
1 2 3 4 5 |
My.Computer.Registry.CurrentUser 'HKEY_CURRENT_USER My.Computer.Registry.LocalMachine 'HKEY_LOCAL_MACHINE My.Computer.Registry.Users 'HKEY_USERS My.Computer.Registry.CurrentConfig 'HKEY_CURRENT_CONFIG My.Computer.Registry.ClassesRoot 'HKEY_CLASSES_ROOT |
1- افزودن یک کلید رجیستری یا یک متغیر در آن
برای این کار از دستور زیر بهره می بریم:
1 2 3 |
My.Computer.Registry.CurrentUser.CreateSubKey(subkey) 'برای ایجاد یک کلید '=================================================================== My.Computer.Registry.SetValue(keyName, valueName, Value, valueKind) 'برای ایجاد یک متغیر |
که در اینجا مقادیر subkey, keyName, valueName, Value, valueKind به صورت جدول زیر قابل تعریف اند.
متغیر | تعریف | مثال |
subkey | ریشه کلید | ExampleKey |
keyName | نام کلید | HKEY_CURRENT_USER\ExampleKey |
valueName | نام متغیر | ExampleValue |
Value | متغیر | 0، 1، Value یا هر چیز دیگر |
valueKind | نوع متغیر | Binary, DWord, ExpandString, MultiString, None, QWord, String, Unknown |
توجه: برای استفاده از متغیر valueKind در ویژوال بیسیک باید از دستور زیر استفاده کنید:
1 |
Microsoft.Win32.RegistryValueKind.valueKind |
2- خواندن یک رجیستری
1 2 |
Dim readValue As String readValue = My.Computer.Registry.GetValue(keyName, valueName, Nothing) |
در این دستور یک متغیر از نوع رشته یا String به نام readValue تعریف می شود و از طریق دستور GetValue، یک متغیر را در خود قرار داده و به خروجی می دهد.
3- حذف رجیستری
1 2 |
My.Computer.Registry.CurrentUser.DeleteSubKey(subkey) 'برای حذف یک کلید My.Computer.Registry.CurrentUser.DeleteValue(valueName) 'برای حذف یک متغیر |
4- تغییر در رجیستری
1 2 3 4 |
Dim ExampleRegistry = My.Computer.Registry.<strong>RegistryKind</strong>.OpenSubKey("مکان متغیر", IsWritable) 'تغییر به 0 ExampleRegistry.SetValue(valueName, مقداری که می خواهید تغییر بدهید) ExampleRegistry.Close() |
در کد فوق بجای عبارت RegistryKind باید یکی از موارد گفته شده در تابع My.Computer.Registry را قرار دهید و بجای عبارت IsWritable عبارت True یا False را قرار بدهید که به این معناست که آیا داده ما قابل نوشتن است یا فقط توانایی خواندن را دارد.
5- بدست آوردن تعداد کل رجیستری ها در ویندوز (کلید و متغیر)
1 2 3 |
Dim ValueCount, SubKeyCount As Long ValueCount = My.Computer.Registry.CurrentUser.ValueCount.ToString() 'برای شمردن تعداد کل متغیرها SubKeyCount = My.Computer.Registry.CurrentUser.SubKeyCount.ToString() 'برای شمردن تعداد کل کلیدها |
در این کد دو عدد متغیر از نوع Long تعریف می شود که تعداد هر کدام از متغیرها یا کلیدها را در خود جای می دهند.
6- بررسی موجود بودن یک رجیستری
1 2 3 4 5 |
If My.Computer.Registry.GetValue(keyName, valueName, <strong>defaultValue</strong>) Is Nothing Then MsgBox("وجود ندارد") Else MsgBox("وجود دارد") End If |
در کد بالا عبارت defaultValue به معنای این است که اگر متغیری با این مشخصات پیدا نشد، این متغیر جانشین آن شود و به خروجی انتقال یابد. البته ما در اینجا بجای آن از عبارت Nothing استفاده می کنیم که به معنای “هیچ” می باشد.
با سلام
واقعا از زحماتی که می کشید سپاسگزارم .
مطالبتان خیلی عالی است