کار با رجیستری در ویژوال بیسیک - قسمت اول

<!-- /* Font Definitions */ @font-face {font-family:TimesNewRoman; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

کار با رجیستری در ویژوال بیسیک - قسمت اول

رجیستری چیست ؟

سیستم عامل ویندوز تنظیمات سخت افزاری و نرم افزاری خود را بطور

مرکزی در یک بانک اطلاعاتی با ساختار سلسله مراتبی ذخیره می کند

که رجیستری نام دارد . رجیستری جایگزینی برای بسیاری از فایلهای

است که در نسخه های اولیه ویندوز COM و SYS ،INI پیکربندی

موجود بود . رجیستری ، سیستم عامل را با مهیا کردن اطلاعات موردنیز

ها ، کنترل می کند . component شدن load برای اجرای برنامه ها و

رجیستری شامل انواع مختلفی از اطلاعات می باشد مثل :

- اطلاعات سخت افزارهای نصب شده روی سیستم

- اطلاعات درایورهای نصب شده روی سیستم

- اطلاعات برنامه های نصب شده روی سیستم

- اطلاعات پروتکلهای شبکه ای مورد استفاده در سیستم

ساختار رجیستری شامل چندین مجموعه رکورد است که داده های این

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

نوشته می شود .

اجزای رجیستری

۵٣

اجزای تشکیل دهنده رجیستری عبارتند از :

های موجود در ریشه یک folder ها همانند subtree : Subtree – 1

می باشد : subtree درایو هارد هستند . رجستری ویندوز دارای پنج

شامل تمام داده های پیکربندی : HKEY_LOCAL_MACHINE -

،SAM ،Hardware : است key برای کامپیوتر می باشد و شامل 5

System و Software ،Security

شامل داده های مربوط به تنظیمات سیستم عامل : HKEY_USERS -

و محیط ویندوز desktop است مثل تنظیمات user برای هر

شامل داده های کاربر فعلی سیستم : HKEY_CURRENT_USER -

شامل اطلاعات پیکربندی نرم افزار : HKEY_CLASSES_ROOT -

و داده های کلاسهای متناظر با فایل OLE است مثل داده های

شامل اطلاعات مورد نیاز برای : HKEY_CURRENT_CONFIG -

تنظیمات داریورهای سخت افزاری و غیره

های روی هارد subfolder ها و folder ها همانند Key : key – 2

های نرم افزاری یا سخت افزاری می object متناظر با key هستند . هر

قراردارند . key هایی هستند که درون یکسری key ها subkey . باشد

دارای سه entry است . هر entry دارای یک یا چند key هر : Entry – 3

بخش می باشد :

Name - نام

یکی از انواع داده های زیر entry مقدار هر : Data Type - نوع داده ای

است :

،REG_EXPAND_SZ ،REG_SZ ،REG_DWORD

، REG_BINARY

،REG_MULTI_SZ

REG_FULL_RESOURCE_DESCRIPTOT

Value - مقدار

۵۴

!Error

نکته 1 : برای مشاهده رجیستری و اعمال تغییرات در آن ( لطفاً اگر هیچ

تجربه ای در تنظیم کردن رجیستری ندارید اطلاعات آنرا تغییر ندهید ) ،

موجود در ویندوز regedt32.exe و یا regedit.exe می توانید از برنامه

وارد کنید . Run استفاده کنید . برای اینکار کافیست نام برنامه را در کادر

نکته 2 : در قسمت دوم این مقاله کلاسی برای خواندن و نوشتن از/به

رجیستری در ویژوال بیسیک خواهم نوشت و سپس نمونه ای از

کاربردهای نوشتن یکسری اطلاعات خاص در رجیستری را خواهیم دید .

۵۵

کار با رجیستری در ویژوال بیسیک - قسمت دوم

را Registery.bas برای کار با رجیستری در ویژوال بیسیک کلاس

مطابق مطالب زیر ایجاد کرده و در پروژه های خود از آن استفاده کنید :

1 - تعریف ثابتهای مورد نیاز : برای نوشتن این کلاس نیاز به تعریف

چهار دسته ثابت داریم :

های رجیستری : entry های data type - ثابتهای مربوط به تعریف

Global Const REG_SZ As Long = 1

REG_DWORD As Long = 4 Global Const

های رجیستری key - ثابتهای مربوط به تعریف

H80000000& = Global Const HKEY_CLASSES_ROOT

H80000001& = Global Const HKEY_CURRENT_USER

H80000002& = Const HKEY_LOCAL_MACHINE Global

H80000003& = Global Const HKEY_USERS

- ثابتهای مربوط به خطاهای کار با رجیستری

Global Const ERROR_NONE = 0

ERROR_BADDB = 1 Global Const

Global Const ERROR_BADKEY = 2

3 = Global Const ERROR_CANTOPEN

Global Const ERROR_CANTREAD = 4

5 = Global Const ERROR_CANTWRITE

۵۶

Global Const ERROR_OUTOFMEMORY = 6

7 = Global Const ERROR_INVALID_PARAMETER

Global Const ERROR_ACCESS_DENIED = 8

ERROR_INVALID_PARAMETERS = 87 Global Const

Global Const ERROR_NO_MORE_ITEMS = 259

- ثابتهای متفرقه

H3F& = Global Const KEY_ALL_ACCESS

Const REG_OPTION_NON_VOLATILE = 0 Global

های مورد نیاز : برای کار با رجیستری از توابع Api کردن Declare - 2

استفاده می کنیم . این توابع عبارتند از : Advapi32.dll کتابخانه

key مربوط به یک handle آزاد کردن : RegCloseKey - تابع

ByVal ) "Declare Function RegCloseKey Lib "advapi32.dll

hKey As Long) As Long

key در رجیستری ( اگر key ساخت یک : RegCreateKeyEx - تابع

قبلا وجود داشته باشد ، این تابع آنرا باز می کند) :

"Declare Function RegCreateKeyEx Lib "advapi32.dll

Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal

Reserved As Long, ByVal lpSubKey As String, ByVal

lpClass As String, ByVal dwOptions As Long, ByVal

samDesired As Long, ByVal lpSecurityAttributes As Long,

lpdwDisposition As Long) As Long ,phkResult As Long

۵٧

/ 0 نظر / 92 بازدید