Jump to content
PLC Forum


Sign in to follow this  
NRG

Api Registro Di Sistema Per Vb6

Recommended Posts

NRG

Salve, ho un problema nella scrittura del codice di un programma in Visual Basic 6.0.

Vorrei sapere se esiste qualche API che mi permette di leggere, nel Registro di Sistema, i nomi delle sottochiavi contenute all'interno di una chiave principale nota.

Ad esempio data la chiave principale HKEY_LOCAL_MACHINE la funzione deve restituire la lista delle relative sottochiavi (ad esempio): HARDWARE,SOFTWARE, SYSTEM, ecc.

Ho utilizzato ad esempio le API RegOpenKeyEx (apre una chiave nel registro di configurazione) e RegQueryValueEx (legge un valore della chiave dal registro di configurazione), ma ho sempre la necessitĂ  di inserire nel codice il nome della chiave da esaminare.

Grazie..

NRG

Share this post


Link to post
Share on other sites

jumpier

Prova questo: dovrebbe restituirti tutte le sottochiavi del registry rispetto ad una specificata:

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _

(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _

ByVal samDesired As Long, phkResult As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As _

Long

Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" _

(ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, _

ByVal cbName As Long) As Long

Const KEY_READ = &H20019 ' ((READ_CONTROL Or KEY_QUERY_VALUE Or

' KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not

' SYNCHRONIZE))

' Enumerate registry keys under a given key

'

' returns a collection of strings

Function EnumRegistryKeys(ByVal hKey As Long, ByVal KeyName As String) As _

Collection

Dim handle As Long

Dim length As Long

Dim index As Long

Dim subkeyName As String

' initialize the result collection

Set EnumRegistryKeys = New Collection

' Open the key, exit if not found

If Len(KeyName) Then

If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) Then Exit Function

' in all case the subsequent functions use hKey

hKey = handle

End If

Do

' this is the max length for a key name

length = 260

subkeyName = Space$(length)

' get the N-th key, exit the loop if not found

If RegEnumKey(hKey, index, subkeyName, length) Then Exit Do

' add to the result collection

subkeyName = Left$(subkeyName, InStr(subkeyName, vbNullChar) - 1)

EnumRegistryKeys.Add subkeyName, subkeyName

' prepare to query for next key

index = index + 1

Loop

' Close the key, if it was actually opened

If handle Then RegCloseKey handle

End Function

Ciao alla prox B)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...