Récupération du chemin d'une application dans la registry

Vanille - 24 août 2001 à 11:32
 Vanille - 24 août 2001 à 15:25
Bonjour à tous!

Je souhaiterais récupérer, dans la base de registre, le chemin d'une application installée.
Mon programme (ci-dessous) semble fonctionner pour récupérer la valeur d'un clé dans la base de registre, mais me retourne un type de valeur "REG_NONE" sur le nom "Défaut" de la clé "InstallPath", alors qu'il y a une chaîne de caractère donnant le chemin de l'application.
Quelqu'un peut-il m'aider à comprendre pourquoi je ne peux pas lire le contenu de cette clé?

Merci beaucoup de l'aide que vous pourrez m'apporter.

Dans un module, je déclare:
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Const HKEY_CURRENT_USER = &H80000001
Public Const ERROR_SUCCESS = 0&
Public Const REG_SZ = 1
Public Const KEY_READ = &H20019

Private Sub RechercheAcro4()

Dim hKey As Long
Dim Path As String
Dim KeyHand As Long
Dim Resultat As Long
Dim sName As String
Dim datatype As Long
Dim strBuf As String
Dim slength As Long

hKey = HKEY_CURRENT_USER
Path = "Software\Adobe\Acrobat Reader\4.0\InstallPath"
sName = "Défaut"

'Ouverture de la clé
Resultat = RegOpenKeyEx(hKey, Path, 0, KEY_READ, KeyHand)

If Resultat <> 0 Then
Debug.Print "ERROR: Unable to open registry key!"
Exit Sub
End If
strBuf = Space(255)
slength = 255

Resultat = RegQueryValueEx(KeyHand, sName, 0, datatype, ByVal strBuf, slength)
Debug.Print "format: "; datatype
If datatype = REG_SZ Then
strBuf = Left(strBuf, slength - 1)
Debug.Print "chemin: "; strBuf
Else
Debug.Print "Data not in string format. Unable to interpret data."
End If

Resultat = RegCloseKey(KeyHand)

2 réponses

D'après mon expérience avec la classe cRegistry (cf: http://vbaccelerator.com), pour aller prendre la valeur de "(Default)", il suffit de mettre rien (soit "") pour le nom de la clé.
0
C'est OK!
Merci pour le coup de pouce.
Vanille
0
Rejoignez-nous