Newsgroup: it.comp.lang.visual-basic
Titolo: API registro da VB

di nuovo salve a tutti...ho la necessità di ritoccare alcuni valori del
registro usando vb e quindi ho proceduto alla dichiarazione dell API:
    Declare Function RegCloseKey Lib "advapi32.dll" _
        (ByVal hKey As Long) As Long
        Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias _
        "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
        ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions _
        As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes _
        As Long, phkResult As Long, lpdwDisposition As Long) As Long
        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
        Declare Function RegQueryValueExString Lib "advapi32.dll" Alias _
        "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
        String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
        As String, lpcbData As Long) As Long
        Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias _
        "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
        String, ByVal lpReserved As Long, lpType As Long, lpData As _
        Long, lpcbData As Long) As Long
        Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias _
        "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
        String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
        As Long, lpcbData As Long) As Long
    Declare Function RegSetValueExString Lib "advapi32.dll" Alias _
        "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
        ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As _
        String, ByVal cbData As Long) As Long
        Declare Function RegSetValueExLong Lib "advapi32.dll" Alias _
        "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
        ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, _
        ByVal cbData As Long) As Long
    Global Const REG_SZ As Long = 1
        Global Const REG_DWORD As Long = 4
    Global Const HKEY_CLASSES_ROOT = &H80000000
        Global Const HKEY_CURRENT_USER = &H80000001
        Global Const HKEY_LOCAL_MACHINE = &H80000002
        Global Const HKEY_USERS = &H80000003
        Global Const HKEY_CURRENT_CONFIG = &H80000005 '*
        Global Const HKEY_DYN_DATA = &H80000006 '*
        Global Const HKEY_PERFORMANCE_DATA = &H80000004 '*
    Global Const ERROR_NONE = 0
        Global Const ERROR_BADDB = 1
        Global Const ERROR_BADKEY = 2
        Global Const ERROR_CANTOPEN = 3
        Global Const ERROR_CANTREAD = 4
        Global Const ERROR_CANTWRITE = 5
        Global Const ERROR_OUTOFMEMORY = 6
        Global Const ERROR_INVALID_PARAMETER = 7
        Global Const ERROR_ACCESS_DENIED = 8
        Global Const ERROR_INVALID_PARAMETERS = 87
        Global Const ERROR_NO_MORE_ITEMS = 259
    Global Const KEY_ALL_ACCESS = &H3F
        Global Const REG_OPTION_NON_VOLATILE = 0
E fin qui non dovrebbero esserci problemi... poi però nel form non so più
cosa mettere... da qualche parte ho letto un esempio come questo:
Public Function QueryValue(PK As Long, sKeyName As String, sValueName As
String) As Variant
    'ritorna il valore nella chiave indicata
    'da usare così: QueryValue "MiaChiave\Sottochiave", "StringValue"
    Dim lRetVal As Long      'risultato delle funzioni API
    Dim hKey As Long         'handle che identifica la chiave aperta
    Dim vValue As Variant    'impostazioni del chiave cercata
    lRetVal = RegOpenKeyEx(PK, sKeyName, 0, _
                                KEY_ALL_ACCESS, hKey)
    lRetVal = QueryValueEx(hKey, sValueName, vValue)
    'MsgBox vValue           'per ogni evenienza ;-)
    RegCloseKey (hKey)
    QueryValue = vValue
End Function
dovrebbe servire a far tornare il valore di una certa chiave... ma se io per
esempio volessi visualizzare il valore di:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
ed con il nome del valore: Norton Auto-Protect
cosa dovrei modificare nell'esempio sopra ?
Grazie e ciauz
Lord Goliath

 
Su MSDN ci sono parecchi esempi sull'utilizzo del registro con VB.
Se cerchi in giro per la rete inoltre trovi parecchie funzioni che lo fanno.
Vedi ad esempio il sito comune.
Lo stesso mio programma (vedi firma) le include.
-- 
Samuele Battarra
mail server: 
libero.it
, account: battarsa
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

 ha scritto nel messaggio
news:F6j17.13498$D03.4...@news.infostrada.it...


 un gran piacere
Non č che ci sia molto da capire.
Semplicemente prendi il modulo "Funzioni registro.bas" e lo aggiungi
al tuo progetto. Tutto il resto non ti serve.
A questo punto se ad esempio vuoi leggere dalla chiave
"HKEY_CURRENT_USER\Software\Microsoft\Notepad" la stringa contenuta
in "lfFaceName" devi semplicemente fare:
LeggiChiaveStringa "HKEY_CURRENT_USER\Software\Microsoft\Notepad", _
   "lfFaceName", S
dove S e' una variabile di tipo stringa.
Se hai bisogno di altri chiarimenti sull'uso delle funzioni chiedi pure.
