J'essaye de lire une valeur dans la base des registres, cette valeur est
conservée dans la section LOCAL_MACHINE de manière à être partagée entre les
différents comptes utilisateurs de la machine.
A partir du compte administrateur je parviens à lire cette valeur sans aucun
souci, par contre à partir d'un compte utilisateur sans droit, j'obtiens une
jolie chaine vide en retour. Ce que je ne comprend pas, c'est que si le
blocage était par rapport aux droits de chacun, comment j'arriverai à voir
ma valeur avec regedit à partir du compte utilisateur, ce que je parviens à
faire.
Pour complément, ci-dessous le code qui me permet de lire la valeur
Public Function GetSetting(ByVal Section As String, ByVal Key As String,
HKeyRoot As Long, Optional ByVal Default As String = "") As String
' Section Required. String expression containing the name of the
section where the key setting is found.
' If omitted, key setting is assumed to be in default subkey.
' Key Required. String expression containing the name of the key
setting to return.
' Default Optional. Expression containing the value to return if no
value is set in the key setting.
' If omitted, default is assumed to be a zero-length string
("").
Dim nRet As Long
Dim hKey As Long
Dim nType As Long
Dim nBytes As Long
Dim buffer As String
' Assume failure and set return to Default
GetSetting = Default
' Open key
nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey)
If nRet = ERROR_SUCCESS Then
' Set appropriate value for default query
If Key = "*" Then Key = vbNullString
' Determine how large the buffer needs to be
nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, nBytes)
If nRet = ERROR_SUCCESS Then
' Build buffer and get data
If nBytes > 0 Then
buffer = Space(nBytes)
nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer,
Len(buffer))
If nRet = ERROR_SUCCESS Then
' Trim NULL and return successful query!
GetSetting = Left$(buffer, nBytes - 1)
End If
End If
End If
End If
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Bonjour/soir,
AMHA, l'erreur se trouve dans nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, *KEY_ALL_ACCESS*, hKey)
Tu demande tous les droits sur la clé... Windows sait que l'utilisateur ne peut pas les avoir et donc ne te permet pas d'avoir tous les droits et donc, n'accepte pas la demande...
Un KEY_QUERY_VALUE (de mémoire) serait plus approprié.. et tu trouveras d'autres infos dans la msdn: http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp
J'essaye de lire une valeur dans la base des registres, cette valeur est conservée dans la section LOCAL_MACHINE de manière à être partagée entre les différents comptes utilisateurs de la machine.
A partir du compte administrateur je parviens à lire cette valeur sans aucun souci, par contre à partir d'un compte utilisateur sans droit, j'obtiens une jolie chaine vide en retour. Ce que je ne comprend pas, c'est que si le blocage était par rapport aux droits de chacun, comment j'arriverai à voir ma valeur avec regedit à partir du compte utilisateur, ce que je parviens à faire.
Pour complément, ci-dessous le code qui me permet de lire la valeur
Public Function GetSetting(ByVal Section As String, ByVal Key As String, HKeyRoot As Long, Optional ByVal Default As String = "") As String ' Section Required. String expression containing the name of the section where the key setting is found. ' If omitted, key setting is assumed to be in default subkey. ' Key Required. String expression containing the name of the key setting to return. ' Default Optional. Expression containing the value to return if no value is set in the key setting. ' If omitted, default is assumed to be a zero-length string (""). Dim nRet As Long Dim hKey As Long Dim nType As Long Dim nBytes As Long Dim buffer As String
' Assume failure and set return to Default GetSetting = Default
' Open key nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey) If nRet = ERROR_SUCCESS Then ' Set appropriate value for default query If Key = "*" Then Key = vbNullString
' Determine how large the buffer needs to be nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, nBytes) If nRet = ERROR_SUCCESS Then ' Build buffer and get data If nBytes > 0 Then buffer = Space(nBytes) nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, Len(buffer)) If nRet = ERROR_SUCCESS Then ' Trim NULL and return successful query! GetSetting = Left$(buffer, nBytes - 1) End If End If End If End If End Function
Bonjour/soir,
AMHA, l'erreur se trouve dans
nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, *KEY_ALL_ACCESS*, hKey)
Tu demande tous les droits sur la clé...
Windows sait que l'utilisateur ne peut pas les avoir et donc ne te permet
pas d'avoir tous les droits et donc, n'accepte pas la demande...
Un KEY_QUERY_VALUE (de mémoire) serait plus approprié.. et tu trouveras
d'autres infos dans la msdn:
http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp
J'essaye de lire une valeur dans la base des registres, cette valeur
est conservée dans la section LOCAL_MACHINE de manière à être
partagée entre les différents comptes utilisateurs de la machine.
A partir du compte administrateur je parviens à lire cette valeur
sans aucun souci, par contre à partir d'un compte utilisateur sans
droit, j'obtiens une jolie chaine vide en retour. Ce que je ne
comprend pas, c'est que si le blocage était par rapport aux droits de
chacun, comment j'arriverai à voir ma valeur avec regedit à partir du
compte utilisateur, ce que je parviens à faire.
Pour complément, ci-dessous le code qui me permet de lire la valeur
Public Function GetSetting(ByVal Section As String, ByVal Key As
String, HKeyRoot As Long, Optional ByVal Default As String = "") As
String ' Section Required. String expression containing the name
of the
section where the key setting is found.
' If omitted, key setting is assumed to be in default
subkey. ' Key Required. String expression containing the
name of the key setting to return.
' Default Optional. Expression containing the value to return if
no value is set in the key setting.
' If omitted, default is assumed to be a zero-length
string ("").
Dim nRet As Long
Dim hKey As Long
Dim nType As Long
Dim nBytes As Long
Dim buffer As String
' Assume failure and set return to Default
GetSetting = Default
' Open key
nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey)
If nRet = ERROR_SUCCESS Then
' Set appropriate value for default query
If Key = "*" Then Key = vbNullString
' Determine how large the buffer needs to be
nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer,
nBytes) If nRet = ERROR_SUCCESS Then
' Build buffer and get data
If nBytes > 0 Then
buffer = Space(nBytes)
nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer,
Len(buffer))
If nRet = ERROR_SUCCESS Then
' Trim NULL and return successful query!
GetSetting = Left$(buffer, nBytes - 1)
End If
End If
End If
End If
End Function
AMHA, l'erreur se trouve dans nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, *KEY_ALL_ACCESS*, hKey)
Tu demande tous les droits sur la clé... Windows sait que l'utilisateur ne peut pas les avoir et donc ne te permet pas d'avoir tous les droits et donc, n'accepte pas la demande...
Un KEY_QUERY_VALUE (de mémoire) serait plus approprié.. et tu trouveras d'autres infos dans la msdn: http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp
J'essaye de lire une valeur dans la base des registres, cette valeur est conservée dans la section LOCAL_MACHINE de manière à être partagée entre les différents comptes utilisateurs de la machine.
A partir du compte administrateur je parviens à lire cette valeur sans aucun souci, par contre à partir d'un compte utilisateur sans droit, j'obtiens une jolie chaine vide en retour. Ce que je ne comprend pas, c'est que si le blocage était par rapport aux droits de chacun, comment j'arriverai à voir ma valeur avec regedit à partir du compte utilisateur, ce que je parviens à faire.
Pour complément, ci-dessous le code qui me permet de lire la valeur
Public Function GetSetting(ByVal Section As String, ByVal Key As String, HKeyRoot As Long, Optional ByVal Default As String = "") As String ' Section Required. String expression containing the name of the section where the key setting is found. ' If omitted, key setting is assumed to be in default subkey. ' Key Required. String expression containing the name of the key setting to return. ' Default Optional. Expression containing the value to return if no value is set in the key setting. ' If omitted, default is assumed to be a zero-length string (""). Dim nRet As Long Dim hKey As Long Dim nType As Long Dim nBytes As Long Dim buffer As String
' Assume failure and set return to Default GetSetting = Default
' Open key nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey) If nRet = ERROR_SUCCESS Then ' Set appropriate value for default query If Key = "*" Then Key = vbNullString
' Determine how large the buffer needs to be nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, nBytes) If nRet = ERROR_SUCCESS Then ' Build buffer and get data If nBytes > 0 Then buffer = Space(nBytes) nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, Len(buffer)) If nRet = ERROR_SUCCESS Then ' Trim NULL and return successful query! GetSetting = Left$(buffer, nBytes - 1) End If End If End If End If End Function
Jérôme VERITE
Merci beaucoup, ca marche à merveille
Jérôme
"François Picalausa" a écrit dans le message de news: #
Bonjour/soir,
AMHA, l'erreur se trouve dans nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, *KEY_ALL_ACCESS*, hKey)
Tu demande tous les droits sur la clé... Windows sait que l'utilisateur ne peut pas les avoir et donc ne te permet pas d'avoir tous les droits et donc, n'accepte pas la demande...
Un KEY_QUERY_VALUE (de mémoire) serait plus approprié.. et tu trouveras d'autres infos dans la msdn: http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp
Jérôme VERITE wrote: > Bonjour à tous, > > J'essaye de lire une valeur dans la base des registres, cette valeur > est conservée dans la section LOCAL_MACHINE de manière à être > partagée entre les différents comptes utilisateurs de la machine. > > A partir du compte administrateur je parviens à lire cette valeur > sans aucun souci, par contre à partir d'un compte utilisateur sans > droit, j'obtiens une jolie chaine vide en retour. Ce que je ne > comprend pas, c'est que si le blocage était par rapport aux droits de > chacun, comment j'arriverai à voir ma valeur avec regedit à partir du > compte utilisateur, ce que je parviens à faire. > > Pour complément, ci-dessous le code qui me permet de lire la valeur > > Merci d'avance pour votre aide > > Jérôme > > strRetour = GetSetting("SoftwareEntrepriseLogiciel", "Champ", > HKEY_LOCAL_MACHINE) > > Public Function GetSetting(ByVal Section As String, ByVal Key As > String, HKeyRoot As Long, Optional ByVal Default As String = "") As > String ' Section Required. String expression containing the name > of the > section where the key setting is found. > ' If omitted, key setting is assumed to be in default > subkey. ' Key Required. String expression containing the > name of the key setting to return. > ' Default Optional. Expression containing the value to return if > no value is set in the key setting. > ' If omitted, default is assumed to be a zero-length > string (""). > Dim nRet As Long > Dim hKey As Long > Dim nType As Long > Dim nBytes As Long > Dim buffer As String > > ' Assume failure and set return to Default > GetSetting = Default > > ' Open key > nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey) > If nRet = ERROR_SUCCESS Then > ' Set appropriate value for default query > If Key = "*" Then Key = vbNullString > > ' Determine how large the buffer needs to be > nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, > nBytes) If nRet = ERROR_SUCCESS Then > ' Build buffer and get data > If nBytes > 0 Then > buffer = Space(nBytes) > nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, > Len(buffer)) > If nRet = ERROR_SUCCESS Then > ' Trim NULL and return successful query! > GetSetting = Left$(buffer, nBytes - 1) > End If > End If > End If > End If > End Function
Merci beaucoup, ca marche à merveille
Jérôme
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de news:
#eOgoI1VDHA.2360@TK2MSFTNGP10.phx.gbl...
Bonjour/soir,
AMHA, l'erreur se trouve dans
nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, *KEY_ALL_ACCESS*, hKey)
Tu demande tous les droits sur la clé...
Windows sait que l'utilisateur ne peut pas les avoir et donc ne te permet
pas d'avoir tous les droits et donc, n'accepte pas la demande...
Un KEY_QUERY_VALUE (de mémoire) serait plus approprié.. et tu trouveras
d'autres infos dans la msdn:
http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp
Jérôme VERITE wrote:
> Bonjour à tous,
>
> J'essaye de lire une valeur dans la base des registres, cette valeur
> est conservée dans la section LOCAL_MACHINE de manière à être
> partagée entre les différents comptes utilisateurs de la machine.
>
> A partir du compte administrateur je parviens à lire cette valeur
> sans aucun souci, par contre à partir d'un compte utilisateur sans
> droit, j'obtiens une jolie chaine vide en retour. Ce que je ne
> comprend pas, c'est que si le blocage était par rapport aux droits de
> chacun, comment j'arriverai à voir ma valeur avec regedit à partir du
> compte utilisateur, ce que je parviens à faire.
>
> Pour complément, ci-dessous le code qui me permet de lire la valeur
>
> Merci d'avance pour votre aide
>
> Jérôme
>
> strRetour = GetSetting("SoftwareEntrepriseLogiciel", "Champ",
> HKEY_LOCAL_MACHINE)
>
> Public Function GetSetting(ByVal Section As String, ByVal Key As
> String, HKeyRoot As Long, Optional ByVal Default As String = "") As
> String ' Section Required. String expression containing the name
> of the
> section where the key setting is found.
> ' If omitted, key setting is assumed to be in default
> subkey. ' Key Required. String expression containing the
> name of the key setting to return.
> ' Default Optional. Expression containing the value to return if
> no value is set in the key setting.
> ' If omitted, default is assumed to be a zero-length
> string ("").
> Dim nRet As Long
> Dim hKey As Long
> Dim nType As Long
> Dim nBytes As Long
> Dim buffer As String
>
> ' Assume failure and set return to Default
> GetSetting = Default
>
> ' Open key
> nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey)
> If nRet = ERROR_SUCCESS Then
> ' Set appropriate value for default query
> If Key = "*" Then Key = vbNullString
>
> ' Determine how large the buffer needs to be
> nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer,
> nBytes) If nRet = ERROR_SUCCESS Then
> ' Build buffer and get data
> If nBytes > 0 Then
> buffer = Space(nBytes)
> nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer,
> Len(buffer))
> If nRet = ERROR_SUCCESS Then
> ' Trim NULL and return successful query!
> GetSetting = Left$(buffer, nBytes - 1)
> End If
> End If
> End If
> End If
> End Function
"François Picalausa" a écrit dans le message de news: #
Bonjour/soir,
AMHA, l'erreur se trouve dans nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, *KEY_ALL_ACCESS*, hKey)
Tu demande tous les droits sur la clé... Windows sait que l'utilisateur ne peut pas les avoir et donc ne te permet pas d'avoir tous les droits et donc, n'accepte pas la demande...
Un KEY_QUERY_VALUE (de mémoire) serait plus approprié.. et tu trouveras d'autres infos dans la msdn: http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp
Jérôme VERITE wrote: > Bonjour à tous, > > J'essaye de lire une valeur dans la base des registres, cette valeur > est conservée dans la section LOCAL_MACHINE de manière à être > partagée entre les différents comptes utilisateurs de la machine. > > A partir du compte administrateur je parviens à lire cette valeur > sans aucun souci, par contre à partir d'un compte utilisateur sans > droit, j'obtiens une jolie chaine vide en retour. Ce que je ne > comprend pas, c'est que si le blocage était par rapport aux droits de > chacun, comment j'arriverai à voir ma valeur avec regedit à partir du > compte utilisateur, ce que je parviens à faire. > > Pour complément, ci-dessous le code qui me permet de lire la valeur > > Merci d'avance pour votre aide > > Jérôme > > strRetour = GetSetting("SoftwareEntrepriseLogiciel", "Champ", > HKEY_LOCAL_MACHINE) > > Public Function GetSetting(ByVal Section As String, ByVal Key As > String, HKeyRoot As Long, Optional ByVal Default As String = "") As > String ' Section Required. String expression containing the name > of the > section where the key setting is found. > ' If omitted, key setting is assumed to be in default > subkey. ' Key Required. String expression containing the > name of the key setting to return. > ' Default Optional. Expression containing the value to return if > no value is set in the key setting. > ' If omitted, default is assumed to be a zero-length > string (""). > Dim nRet As Long > Dim hKey As Long > Dim nType As Long > Dim nBytes As Long > Dim buffer As String > > ' Assume failure and set return to Default > GetSetting = Default > > ' Open key > nRet = RegOpenKeyEx(HKeyRoot, Section, 0&, KEY_ALL_ACCESS, hKey) > If nRet = ERROR_SUCCESS Then > ' Set appropriate value for default query > If Key = "*" Then Key = vbNullString > > ' Determine how large the buffer needs to be > nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, > nBytes) If nRet = ERROR_SUCCESS Then > ' Build buffer and get data > If nBytes > 0 Then > buffer = Space(nBytes) > nRet = RegQueryValueEx(hKey, Key, 0&, nType, ByVal buffer, > Len(buffer)) > If nRet = ERROR_SUCCESS Then > ' Trim NULL and return successful query! > GetSetting = Left$(buffer, nBytes - 1) > End If > End If > End If > End If > End Function