Newsgroup: it.comp.lang.visual-basic
Titolo: REGISTRo di configurazione!!!!! :-((

Salve!!!
E la terza volta che posto questo messaggio.
E' mai possibile che nessuno sappia il codice per verificare l'esistenza di
una determinata stringa nel registro di configurazione???
Grazie mille!!
--
__________________________
                 by D.S.A.
 
adi...@tin.it
http://space.tin.it/sport/mdistasi
__________________________
Microsoft Windows 98 Beta-Tester
|""""""""""""""""""""""""""""""""""""""""""""""|\
| -------------------------Alfonso Di Stasio------------------------|\|
| ----------------- Visual Basic Programmer-------------------|\|
|
|\|
|     Sideralis Programs (Visual-Basic and Delphi)    |\|
| 
http://www.geocities.com/colosseum/loge/2151
 |\|
\""""""""""""""""""""""""""""""""""""""""""""""\|
  """""""""""""""""""""""""""""""""""""""""""""""

Grazie mille!!
Intendi che devi cercare una stringa in tutto il registry o che hai una
chiave con relativo percorso e vuoi vedere se esiste?

...


Il primo modo che mi viene in mente e' quello di aprire la chiave e rilevare
un eventuale errore di chiave non presente. L' API da usare e' RegOpenKeyEx:
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
hKey e' l'handle della chiave di partenza (LOCAL_MACHINE, USERS ecc.) ed e'
indicata da una delle 4 costanti HKEY_xxx;
lpSubKey e' la stringa contenente la sottochiave;
ulOptions e' riservato, va a 0;
samDesired sono i permessi (costanti KEY_xxx, vedi esempio sotto);
phkResult conterra' l'handle della chiave se presente;
La funzione puo' ritornare diversi valori ma a noi interessano ERROR_SUCCESS
se ha trovato la chiave, ERROR_FILE_NOT_FOUND se la chiave non esiste.
Segue un esempio con le varie costanti da usare:
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
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const ERROR_SUCCESS = 0&
Public Const ERROR_FILE_NOT_FOUND = 2&
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_CREATE_LINK = &H20
Public Const SYNCHRONIZE = &H100000
Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or
KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
'Codice per cercare la chiave
<HKEY_LOCAL_MACHINE\Config\0001\Display\Settings>
Dim Key As String
Dim handle As Long
Dim ret As Long
Key = "Config\0001\Display\Settings"
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, Key, 0&, KEY_ALL_ACCESS, handle)
'Controllo ret
Ciao.

Ciao.


  Ah, be', allora puoi provare questo codice:
    Dim strResolved As String
    strResolved = Space$(255)
    If Not RegOpenKey(HKEY_LOCAL_MACHINE, searchstring, hKey) Then
        RegQueryValue HKEY_LOCAL_MACHINE, searchstring, strResolved,
255
        RegCloseKey hKey
        Temp$ = strResolved
    End If
  dove searchstring e' la chiave da ricercare. Ovviamente, se la
gerarchia e' diversa, va cambiata anche quella.
  Ciao :-)
  Massimo
  Nell'indirizzo, sostituire DIESPAMMERS con MC1258
  In the address, replace DIESPAMMERS with MC1258

  Ah, be', allora puoi provare questo codice:
[....]



