Vai al contenuto
PLC Forum


Api Registro Di Sistema Per Vb6


Messaggi consigliati

Inserito:

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


Inserita:

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)

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...