PDA

View Full Version : خواندن registry در vb6



ali_kolahdoozan
سه شنبه 22 اسفند 1385, 05:47 صبح
سلام


آیا میتوان در vb6 رجیستری را خواند؟ چگونه؟

behzad_gh
سه شنبه 22 اسفند 1385, 08:07 صبح
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal lngRootKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal lngRootKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Const REG_SZ As Long = 1
Const REG_DWORD As Long = 4
Const HKEY_LOCAL_MACHINE = &H80000002



Public Function regQuery_A_Key(ByVal lngRootKey As Long, ByVal strRegKeyPath As String, ByVal strRegSubKey As String) As Variant

Dim intPosition As Integer
Dim lngKeyHandle As Long
Dim lngDataType As Long
Dim lngBufferSize As Long
Dim lngBuffer As Long
Dim strBuffer As String
lngKeyHandle = 0
lngBufferSize = 0
m_lngRetVal = RegOpenKey(lngRootKey, strRegKeyPath, lngKeyHandle)
If lngKeyHandle = 0 Then
regQuery_A_Key = ""
m_lngRetVal = RegCloseKey(lngKeyHandle)
Exit Function
End If
m_lngRetVal = RegQueryValueEx(lngKeyHandle, strRegSubKey, 0&, lngDataType, ByVal 0&, lngBufferSize)
If lngKeyHandle = 0 Then
regQuery_A_Key = ""
m_lngRetVal = RegCloseKey(lngKeyHandle)
Exit Function
End If
Select Case lngDataType
Case REG_SZ:
strBuffer = Space(lngBufferSize)
m_lngRetVal = RegQueryValueEx(lngKeyHandle, strRegSubKey, 0&, 0&, ByVal strBuffer, lngBufferSize)
If m_lngRetVal <> ERROR_SUCCESS Then
regQuery_A_Key = ""
Else
intPosition = InStr(1, strBuffer, Chr(0))
If intPosition > 0 Then
regQuery_A_Key = Left(strBuffer, intPosition - 1)
Else
regQuery_A_Key = strBuffer
End If
End If
Case REG_DWORD:
m_lngRetVal = RegQueryValueEx(lngKeyHandle, strRegSubKey, 0&, lngDataType, lngBuffer, 4&) ' 4& = 4-byte word (long integer)
If m_lngRetVal <> ERROR_SUCCESS Then
regQuery_A_Key = ""
Else
regQuery_A_Key = lngBuffer
End If
Case Else:
regQuery_A_Key = ""
End Select
m_lngRetVal = RegCloseKey(lngKeyHandle)

End Function


Private Sub Form_Load()

Dim strKeyQuery As Variant
strKeyQuery = regQuery_A_Key(HKEY_LOCAL_MACHINE, "SOFTWARE\Yahoo\Skin", "Path")

End Sub

bashiry
سه شنبه 22 اسفند 1385, 11:28 صبح
ممنون دستت درد نکنه
من یدونه ماژول دارم تمام توابع رجیستری رو داره همیشه از اون استفاده می کنم خیلی کار باهاش راحت هست

seeker
سه شنبه 22 اسفند 1385, 13:45 عصر
ممنون دستت درد نکنه
من یدونه ماژول دارم تمام توابع رجیستری رو داره همیشه از اون استفاده می کنم خیلی کار باهاش راحت هست
ممکنه در اختیار دیگران هم قرار بدین؟
متشکر

__H2__
چهارشنبه 23 اسفند 1385, 13:13 عصر
سلام
شرمنده، میبخشید، بازم میخواستم بگم اگر متحول شوید و با ورژن جدید VB8 کارکنید، به صورت داخلی ماژول هایی برای اینکار دارد.

seeker
چهارشنبه 23 اسفند 1385, 14:57 عصر
سلام
شرمنده، میبخشید، بازم میخواستم بگم اگر متحول شوید و با ورژن جدید VB8 کارکنید، به صورت داخلی ماژول هایی برای اینکار دارد.
با دات نت نمیتونیم کار کنیم چون ado.net رو بلد نیستیم و خیلی هم مشکله
تمام برنامه های من هم دیتا بیسیه

CodeMasterX
چهارشنبه 23 اسفند 1385, 17:07 عصر
دوستان لطف کردن بله برای اینکار از توابع api مربوط به رجیستری میشه استفاده کرد ولی این ماژول رو هم ببینید.این ماژول بدون استفاده از توابع زیادی اینکار رو انجام میده.طرز استفاده از اون هم خیلی آسونه نیازی به مثال نداره.

majjjj
یک شنبه 24 تیر 1386, 21:01 عصر
دوستان لطف کردن بله برای اینکار از توابع api مربوط به رجیستری میشه استفاده کرد ولی این ماژول رو هم ببینید.این ماژول بدون استفاده از توابع زیادی اینکار رو انجام میده.طرز استفاده از اون هم خیلی آسونه نیازی به مثال نداره.
با سلام
خسته نباشید جالب بود