+ ارسال نظر
نمایش نتایج: از 1 به 1 از 1

موضوع: کار با رجیستري در ویژوال بیسیک - قسمت اول

  1. #1
    مدیرکل انجمنهای نور آسمان vorojax آواتار ها
    تاریخ عضویت
    Jun 2008
    محل سکونت
    همشهری حضرت عشق
    نوشته ها
    7,305
    تشکر
    6
    تشکر شده 0 بار در 0 ارسال

    پیش فرض کار با رجیستري در ویژوال بیسیک - قسمت اول

    [size=large]کار با رجیستري در ویژوال بیسیک - قسمت اول

    رجیستري چیست ؟
    سیستم عامل ویندوز تنظیمات سخت افزاري و نرم افزاري خود را بطور
    مرکزي در یک بانک اطلاعاتی با ساختار سلسله مراتبی ذخیره می کند
    که رجیستري نام دارد . رجیستري جایگزینی براي بسیاري از فایلهاي
    است که در نسخه هاي اولیه ویندوز 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


    key باز کردن یک : RegOpenKeyEx - تابع
    "Declare Function RegOpenKeyEx Lib "advapi32.dll
    Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal
    ulOptions As Long, ByVal lpSubKey As String, ByVal
    samDesired As Long, phkResult As Long) As Long
    ي یک نام data و type استخراج : RegQueryValueExLong - تابع
    باز شده key متناظر با یک
    Declare Function RegQueryValueExString Lib
    advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey "
    As String, ByVal As Long, ByVal lpValueName
    lpReserved As Long, lpType As Long, ByVal lpData As
    lpcbData As Long) As Long ,String
    Declare Function RegQueryValueExLong Lib
    advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey "
    As String, ByVal As Long, ByVal lpValueName
    lpReserved As Long, lpType As Long, lpData As Long,
    Long) As Long lpcbData As
    Declare Function RegQueryValueExNULL Lib
    advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey "
    As String, ByVal As Long, ByVal lpValueName
    lpReserved As Long, lpType As Long, ByVal lpData As
    lpcbData As Long) As Long ,Long

    یک کلید باز value ذخیره یک مقدار در فیلد : RegSetValueEx - تابع
    Declare Function RegSetValueExString Lib
    advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As "
    String, ByVal Reserved As Long, ByVal lpValueName As
    ,Long, ByVal dwType As Long, ByVal lpValue As String
    ByVal cbData As Long) As Long
    advapi32.dll" " Declare Function RegSetValueExLong Lib
    Alias "RegSetValueExA" (ByVal hKey As Long, ByVal
    String, ByVal Reserved As Long, ByVal lpValueName As
    cbData As dwType As Long, lpValue As Long, ByVal
    Long) As Long
    پاك کردن یک کلید و کلیه اطلاعات مرتبط با : RegDeleteKey - تابع
    آن
    Lib &Private Declare Function RegDeleteKey
    advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As "
    (String Long, ByVal lpSubKey As
    key حذف مقدار یک : RegDeleteValue - تابع
    Lib &Private Declare Function RegDeleteValue
    advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As "
    (String Long, ByVal lpValueName As

    3 - توابع کمکی : براي نوشتن توابع اصلی کار با رجیستري نیاز به
    نوشتن توابع کمکی زیر است :
    با توجه به نوع داده یک کلید ، مقدار موجود در : SetValueEx - تابع
    آنرا در یک متغیر ذخیره می کند :
    ,Public Function SetValueEx(ByVal hKey As Long
    sValueName As String, lType As Long, vValue As
    Variant) As Long
    Long Dim lValue As
    Dim sValue As String
    Select Case lType
    is string Case REG_SZ ' type of value
    sValue = vValue
    sValueName, ,SetValueEx = RegSetValueExString(hKey
    lType, sValue, Len(sValue))x ,&0
    value is Double word Case REG_DWORD ' type of
    lValue = vValue
    sValueName, ,SetValueEx = RegSetValueExLong(hKey
    lType, lValue, 4)x ,&0
    End Select
    End Function
    سایز و نوع داده اي یک داده را که باید : QueryValueEx - تابع
    خوانده شود مشخص می کند .
    Function QueryValueEx(ByVal lhKey As Long, ByVal
    szValueName As String, vValue As Variant) As Long
    Dim cch As Long

    As Long Dim lrc
    Dim lType As Long
    Dim lValue As Long
    String Dim sValue As
    ,&lrc = RegQueryValueExNULL(lhKey, szValueName, 0
    cch)x ,&lType, 0
    Select Case lType
    For strings '
    :Case REG_SZ
    String(cch, 0)x = sValue
    ,&lrc = RegQueryValueExString(lhKey, szValueName, 0
    lType, sValue, cch)x
    If lrc = ERROR_NONE Then
    cch)x ,vValue = Left$(sValue
    Else
    vValue = Empty
    End If
    For DWORDS '
    :REG_DWORD Case
    ,&lrc = RegQueryValueExLong(lhKey, szValueName, 0
    lValue, cch)x ,lType
    If lrc = ERROR_NONE Then vValue = lValue
    Case Else
    other data types not supported all'
    lrc = -1
    Select End
    :QueryValueExExit
    QueryValueEx = lrc
    Function Exit
    :QueryValueExError
    Resume QueryValueExExit
    Function End

    4 - توابع اصلی : توابع مربوط به پاك کردن یک کلید از رجیستري ،
    ساخت یک کلید جدید در رجیستري و مقداردهی به یک کلید :
    این تابع یک کلید از رجیستري را حذف می کند . : DeleteKey - تابع
    داراي دو پارامتر ورودي است :
    ،HKEY_CLASSES_ROOT که یکی از مقادیر Location
    HKEY_CURRENT_USER
    است . HKEY_USERS و یا HKEY_LOCAL_MACHINE ،
    که نام کلیدي است که باید از رجیستري حذف شود . این KeyName
    Key1\SubKey هایی نیز باشد مثلا 1 subkey کلید ممکنست شامل
    ,Public Function DeleteKey(lPredefinedKey As Long
    sKeyName As String)x
    Dim lRetVal As Long
    RegDeleteKey(lPredefinedKey, sKeyName)x = lRetVal
    value DeleteKey = lRetVal ' return function
    End Function
    را از کلید حذف می کند . entry این تابع یک : DeleteValue - تابع
    و KeyName ،Location : داراي سه پارامتر ورودي است
    را مشخص می کند . value که نام آن ValueName
    ,Public Function DeleteValue(lPredefinedKey As Long
    x(sKeyName As String, sValueName As String
    Dim lRetVal As Long
    As Long Dim hKey
    lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0,

    hKey)x ,KEY_ALL_ACCESS
    lRetVal = RegDeleteValue(hKey, sValueName)x
    hKey)x) RegCloseKey
    DeleteValue = lRetVal
    End Function
    این تابع یک کلید جدید ایجاد می کند . داراي : CreateNewKey - تابع
    KeyName و Location : دو پارامتر ورودي است
    ,Public Function CreateNewKey(lPredefinedKey As Long
    sNewKeyName As String)x
    Dim hNewKey As Long
    Dim lRetVal As Long
    lRetVal = RegCreateKeyEx(lPredefinedKey,
    ,vbNullString ,&sNewKeyName, 0
    REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
    lRetVal)x ,hNewKey ,&0
    RegCloseKey (hNewKey)x
    CreateNewKey = lRetVal
    Function End
    را تنظیم می entry یک data این تابع پارامتر : SetKeyValue - تابع
    ،KeyName ،Location : کند . داراي 5 پارامتر ورودي است
    ValueType و ValueSetting ،ValueName
    ,Public Function SetKeyValue(lPredefinedKey As Long
    sKeyName As String, sValueName As String,
    As Long)x vValueSetting As Variant, lValueType
    Dim lRetVal As Long
    Dim hKey As Long

    RegOpenKeyEx(lPredefinedKey, sKeyName, 0, = lRetVal
    KEY_ALL_ACCESS, hKey)x
    SetValueEx(hKey, sValueName, lValueType, = lRetVal
    vValueSetting)x
    hKey)x) RegCloseKey
    SetKeyValue = lRetVal
    End Function
    را برمی گرداند . entry این تابع فیلد داده یک : QueryValue - تابع
    و KeyName ، Location : داراي سه پارامتر ورودي است
    ValueName
    ,Public Function QueryValue(lPredefinedKey As Long
    sKeyName As String, sValueName As String)x
    Dim lRetVal As Long
    As Long Dim hKey
    Dim vValue As Variant
    sKeyName, 0, ,lRetVal = RegOpenKeyEx(lPredefinedKey
    KEY_ALL_ACCESS, hKey)x
    vValue)x ,lRetVal = QueryValueEx(hKey, sValueName
    QueryValue = vValue
    RegCloseKey (hKey)x
    End
    Function
    کار با رجیستري در ویژوال بیسیک - قسمت سوم

    به یک برنامه File Association ساخت یک انتصاب فایل یا
    در این درس می خواهم با استفاده از کلاسی که در درس قبل معرفی شد
    تابعی بسازیم که توسط آن بتوانیم فایلهاي با پسوندي مشخص را به
    یک برنامه اختصاص دهیم . بعبارت دیگر تابعی بنویسیم که اطلاعات
    را توسط برنامه xxx لازم براي باز شدن فایلهایی با پسوند
    در رجیستري ثبت کند . MyApp.exe
    ,Public Sub CreateAssociation(***tension As String
    sApplication As String, sAppPath As String)x
    String Dim sPath, sAppExe As
    ***tension, & "." CreateNewKey
    HKEY_CLASSES_ROOT
    ***tension, & "." ,HKEY_CLASSES_ROOT SetKeyValue
    REG_SZ ,"Document." & "", sApplication
    & CreateNewKey sApplication
    ,"Document\shell\open\command."
    HKEY_CLASSES_ROOT
    & SetKeyValue HKEY_CLASSES_ROOT, sApplication
    Document", REG_SZ " & Document", "", sApplication."
    x"1% " & sPath = sAppPath
    exe"x." & sAppExe = sApplication
    &HKEY_CLASSES_ROOT, sApplication SetKeyValue
    REG_SZ ,Document\shell\open\command", "", sPath."
    CreateNewKey
    "
    Software\Microsoft\Windows\CurrentVersion\Explorer \Fi
    ***tension, HKEY_CURRENT_USER & ".\leExts
    ,SetKeyValue HKEY_CURRENT_USER

    "
    Software\Microsoft\Windows\CurrentVersion\Explorer \Fi
    ***tension, "Application", sAppExe, REG_SZ & ".\leExts
    & sAppExe & "\CreateNewKey "Applications
    shell\open\command", HKEY_CLASSES_ROOT\"
    "\HKEY_CLASSES_ROOT, "Applications SetKeyValue
    sPath, REG_SZ ,"" ,"shell\open\command\" & sAppExe &
    End Sub
    کاربرد این تابع بصورت زیر است :
    CreateAssociation("xxx","MyApp","c:\MyApp.exe")x
    کار با رجیستري در ویژوال بیسیک - قسمت چهارم
    اجرا شدن یک برنامه در هنگام راه اندازي سیستم
    فرض کنید می خواهیم برنامه اي بنویسیم که هر بار در هنگام راه
    startup اندازي سیستم بطور خودکار اجرا شود. البته نمی خواهم در
    ویندوز دیده شود .
    رجیستري قرار دهیم StartUp براي این کار باید برنامه موردنظر را در
    . به این ترتیب که در یکی از کلیدهاي زیر یک مقدار رشته اي
    ایجاد کنیم و آدرس برنامه را در آن وارد کنیم : (String Value) جدید
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windo
    ws\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win
    dows\CurrentVersion\Run

    و مسیرش MyApp براي مثال اگه اسم برنامه مورد نظر
    است باید بصورت زیر عمل کرد : C:\Windows\MyApp.exe
    ,SetKeyValue HKEY_LOCAL_MACHINE
    SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "
    REG_SZ ,""MyApp", "C:\MyApp.exe
    نکته : البته دو تا راه دیگر براي اینکار وجود دارد که برخی تروجان ها هم
    از این روشها استفاده می کنند تا روي سیستم باقی بمانند :
    و دیگري استفاده run = و نوشتن نام فایل جلوي win.ini یکی استفاده از
    . explorer.exe و نوشتن نام برنامه جلوي خط system.ini از [/size]

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    محل سکونت
    Advertising world
    نوشته ها
    Many

     

    حرز امام جواد

     

+ ارسال نظر

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را دارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
کانال سپاه