[VB] lire les cles de la base de registre
Résolu/Fermé
A voir également:
- [VB] lire les cles de la base de registre
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Clé de registre - Guide
- Lire epub - Guide
- Clé de produit windows 10 gratuit - Guide
- Vb - Télécharger - Langages
9 réponses
aldo13
Messages postés
489
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
28 avril 2005
103
25 mars 2005 à 00:38
25 mars 2005 à 00:38
bon un exemple vite trouvé sur google ,
par contre c EnumKey et non EnumKeys , la
'enumkeys.vbs - recursively list the names of all
'keys under HKLM\SOFTWARE
Option Explicit
Dim refRegistry
Const HKEY_LOCAL_MACHINE = &H80000002
Set refRegistry = getobject("winmgmts:root\default:stdregprov")
Enumerate "SOFTWARE\Microsoft",refRegistry,0
Set refRegistry = Nothing
'recursive subroutine call
Sub Enumerate(strKey,refRegistry,numLevel)
Dim arrSubKeys
Dim strSubKey
Dim strIndent
Dim i
'prefix output with correct indentation level
strIndent = ""
For i = 0 To numLevel
strIndent = strIndent + " "
Next
'display output
WScript.Echo strIndent & strKey
'enumerate any subkeys
If refRegistry.EnumKey( _
HKEY_LOCAL_MACHINE, strKey, arrSubKeys) = 0 Then
For Each strSubKey In arrSubKeys
'recursively call ourselves
Enumerate strKey & "\" & strSubKey, refRegistry, numLevel + 1
Next
Else
WScript.Echo "Unable to enumerate. Sorry."
WScript.Quit
End If
End Sub
par contre c EnumKey et non EnumKeys , la
'enumkeys.vbs - recursively list the names of all
'keys under HKLM\SOFTWARE
Option Explicit
Dim refRegistry
Const HKEY_LOCAL_MACHINE = &H80000002
Set refRegistry = getobject("winmgmts:root\default:stdregprov")
Enumerate "SOFTWARE\Microsoft",refRegistry,0
Set refRegistry = Nothing
'recursive subroutine call
Sub Enumerate(strKey,refRegistry,numLevel)
Dim arrSubKeys
Dim strSubKey
Dim strIndent
Dim i
'prefix output with correct indentation level
strIndent = ""
For i = 0 To numLevel
strIndent = strIndent + " "
Next
'display output
WScript.Echo strIndent & strKey
'enumerate any subkeys
If refRegistry.EnumKey( _
HKEY_LOCAL_MACHINE, strKey, arrSubKeys) = 0 Then
For Each strSubKey In arrSubKeys
'recursively call ourselves
Enumerate strKey & "\" & strSubKey, refRegistry, numLevel + 1
Next
Else
WScript.Echo "Unable to enumerate. Sorry."
WScript.Quit
End If
End Sub
Utilisateur anonyme
24 mars 2005 à 00:39
24 mars 2005 à 00:39
Bonjour,
Tous ces objets font partie des GPO (group policy objects)
vous n'avez qu'a chercher de ce côté. Tous le code VBS est importable sous VB, toute fois un petit malin a fait un malheur avec ces outils !!!
"je vous aime" pour ne pas le nommer !
Lupin
Tous ces objets font partie des GPO (group policy objects)
vous n'avez qu'a chercher de ce côté. Tous le code VBS est importable sous VB, toute fois un petit malin a fait un malheur avec ces outils !!!
"je vous aime" pour ne pas le nommer !
Lupin
merci pour ta reponse.
Je viens de passer 45minutes a essayer de trouver :
GPO - trop de reponses auquelles je ne comprends rien et qui ne semnlent pas me concerner
GPO REGISTRE - 4 reponses sans apport interessant
"JE VOUS AIME" beaucoup de reponse mais pas d'utilisateur avec ce nom
Grosse recherche sur le forum pour trouver la liste des membres pour voir les messages de ce "Je vous aime". Rien trouve.
Bref, une grosse deprime qui m'envoie au lit.
A+
Je viens de passer 45minutes a essayer de trouver :
GPO - trop de reponses auquelles je ne comprends rien et qui ne semnlent pas me concerner
GPO REGISTRE - 4 reponses sans apport interessant
"JE VOUS AIME" beaucoup de reponse mais pas d'utilisateur avec ce nom
Grosse recherche sur le forum pour trouver la liste des membres pour voir les messages de ce "Je vous aime". Rien trouve.
Bref, une grosse deprime qui m'envoie au lit.
A+
Utilisateur anonyme
24 mars 2005 à 12:43
24 mars 2005 à 12:43
re:
voici un lien !
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthregread.asp
en fait le "je vous aime" doit être traduit en anglais !
Lupin
voici un lien !
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthregread.asp
en fait le "je vous aime" doit être traduit en anglais !
Lupin
merci pour le lien.
C'est la methode que j'utilise actuellement.
Elle permet de lire une cle ......quand on connait la cle !!!
Moi je ne connais pas la cle en entier. Je veux donc parcourir la base de registre pour comparer les cles et m'arreter a celle qui aura la partie de la cle que je connais.
A moins que j'ai mal compris le contenu du lien (lu 2 fois par acquis de conscience), il ne m'apporte rien.
Merci pour les autres idees.
La lecture sequentielle de la base de registre doit bien etre faisable, non ?
et comme certains logiels arrivent a creer des cles avec l'ID utilisateur, je dois bien pouvoir le faire aussi, non ?
C'est la methode que j'utilise actuellement.
Elle permet de lire une cle ......quand on connait la cle !!!
Moi je ne connais pas la cle en entier. Je veux donc parcourir la base de registre pour comparer les cles et m'arreter a celle qui aura la partie de la cle que je connais.
A moins que j'ai mal compris le contenu du lien (lu 2 fois par acquis de conscience), il ne m'apporte rien.
Merci pour les autres idees.
La lecture sequentielle de la base de registre doit bien etre faisable, non ?
et comme certains logiels arrivent a creer des cles avec l'ID utilisateur, je dois bien pouvoir le faire aussi, non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
24 mars 2005 à 19:17
24 mars 2005 à 19:17
re :
sous la clé :
[HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider]
tu trouveras le ID du user. N'oubli pas que le HKCU et une copie
ou un racourci vers HKU...
de même HKCC est une "copie", un raccourci vers HKLM...
bon, c'est pas évident si tu n'as pas de notion de "active directory", mais en lançant gpedit.msc, tu devrais trouver plusieurs clé du registre en modifiant les valeurs dans la partie "configuration utilisateur".
tu effectue une modif et ensuite tu compare les ruches de la BDR.
il exite plusieurs commandes dos permettant ce genre de manip.
est-ce que cela t'en dit un peu plus, je ne puis détailler ici tous les détails de la BDR.
l'idée de lire de façon séquentiel m'apparait fastidieux, toutes les informations recherché son dans le registre, il ne suffit que de connaitre quelques clés de base qui te donnerons les chemins vers d'autres clés.
Lupin
sous la clé :
[HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider]
tu trouveras le ID du user. N'oubli pas que le HKCU et une copie
ou un racourci vers HKU...
de même HKCC est une "copie", un raccourci vers HKLM...
bon, c'est pas évident si tu n'as pas de notion de "active directory", mais en lançant gpedit.msc, tu devrais trouver plusieurs clé du registre en modifiant les valeurs dans la partie "configuration utilisateur".
tu effectue une modif et ensuite tu compare les ruches de la BDR.
il exite plusieurs commandes dos permettant ce genre de manip.
est-ce que cela t'en dit un peu plus, je ne puis détailler ici tous les détails de la BDR.
l'idée de lire de façon séquentiel m'apparait fastidieux, toutes les informations recherché son dans le registre, il ne suffit que de connaitre quelques clés de base qui te donnerons les chemins vers d'autres clés.
Lupin
Utilisateur anonyme
24 mars 2005 à 20:16
24 mars 2005 à 20:16
re :
d'autres info !
donc le premier lien était pour lire/écrire dans le registre !
voici un autre liens qui te permettra d'installer :
GroupPolicyCommonScenarios.msi
que tu trouveras ici :
http://www.microsoft.com/downloads/details.aspx?FamilyID=354b9f45-8aa6-4775-9208-c681a7043292&DisplayLang=en
ce sont des exemples de scénarios pour les GPOs.
c'est plutôt complexe, mais les réponses que tu cherches
sont bel et bien là.
à partir du %username% tu peux tout retracer dans le registre.
je n'ai fait à ce jour que de petit exercice simple du style de
changer le papier peint du bureau de windows pour un user qui
ne s'est pas encore logger en mofifiant le [.default] de HKU.
bon, ça devrais to donner une bonne piste :-)
du moins je l'espère !
Lupin
d'autres info !
donc le premier lien était pour lire/écrire dans le registre !
voici un autre liens qui te permettra d'installer :
GroupPolicyCommonScenarios.msi
que tu trouveras ici :
http://www.microsoft.com/downloads/details.aspx?FamilyID=354b9f45-8aa6-4775-9208-c681a7043292&DisplayLang=en
ce sont des exemples de scénarios pour les GPOs.
c'est plutôt complexe, mais les réponses que tu cherches
sont bel et bien là.
à partir du %username% tu peux tout retracer dans le registre.
je n'ai fait à ce jour que de petit exercice simple du style de
changer le papier peint du bureau de windows pour un user qui
ne s'est pas encore logger en mofifiant le [.default] de HKU.
bon, ça devrais to donner une bonne piste :-)
du moins je l'espère !
Lupin
aldo13
Messages postés
489
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
28 avril 2005
103
24 mars 2005 à 20:53
24 mars 2005 à 20:53
Salut ,
Tu as essayé avec EnumKeys , par exemple ?
Tu as essayé avec EnumKeys , par exemple ?
oui j'ai bien remarque que sous la cle :
[HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider]
il y a la sous cle contenant l'information que je souhaite.
Mais je n'arrive pas a la lire !!!
voici mon source :
Option Explicit
Private Sub Form_Load()
Dim shellBdR As New WshShell
Dim txtCle As String
txtCle = shellBdR.RegRead("HKCU\Software\Microsoft\Protected Storage System Provider")
MsgBox (txtCle)
End Sub
Comme cette ID utilisateur est une sous-cle, vb me repond qu'il ne trouve pas le fichier.
Mais je sens qu'on est sur la bonne voie.
quant à EnumKeys, non je ne connais pas. si tu veux bien m'en dire un peux plus.
[HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider]
il y a la sous cle contenant l'information que je souhaite.
Mais je n'arrive pas a la lire !!!
voici mon source :
Option Explicit
Private Sub Form_Load()
Dim shellBdR As New WshShell
Dim txtCle As String
txtCle = shellBdR.RegRead("HKCU\Software\Microsoft\Protected Storage System Provider")
MsgBox (txtCle)
End Sub
Comme cette ID utilisateur est une sous-cle, vb me repond qu'il ne trouve pas le fichier.
Mais je sens qu'on est sur la bonne voie.
quant à EnumKeys, non je ne connais pas. si tu veux bien m'en dire un peux plus.
Utilisateur anonyme
25 mars 2005 à 00:52
25 mars 2005 à 00:52
Bonsoir,
oula, voila une question de programmation !
voici donc mon opinion de façon critique :-o
ne jamais utiliser une action sur le registre pendant un "formload"
bon disons que c'est pour l'exemple :)
les types pour les variables de type objet en VBS est toujours "Variant", et ce même sous VB ou VBA.
il faut toujours instancié l'objet [Set]
Il te faudra aussi tenir compte des droits utilisateurs de ton exécutable! certaines clés ne sont accessible que par l'administrateur. Et bien sur l'arrêt/départ de certains services.
et quel est le but de tout ça ?
Private Sub Form_Load()
Dim shellBdR As Variant
Dim txtCle As String
Set shellBdR = WScript.CreateObject("WScript.Shell")
txtCle = shellBdR.RegRead("HKCU\Software\Microsoft\Protected Storage System Provider")
MsgBox (txtCle)
End Sub
Lupin
oula, voila une question de programmation !
voici donc mon opinion de façon critique :-o
ne jamais utiliser une action sur le registre pendant un "formload"
bon disons que c'est pour l'exemple :)
les types pour les variables de type objet en VBS est toujours "Variant", et ce même sous VB ou VBA.
il faut toujours instancié l'objet [Set]
Il te faudra aussi tenir compte des droits utilisateurs de ton exécutable! certaines clés ne sont accessible que par l'administrateur. Et bien sur l'arrêt/départ de certains services.
et quel est le but de tout ça ?
Private Sub Form_Load()
Dim shellBdR As Variant
Dim txtCle As String
Set shellBdR = WScript.CreateObject("WScript.Shell")
txtCle = shellBdR.RegRead("HKCU\Software\Microsoft\Protected Storage System Provider")
MsgBox (txtCle)
End Sub
Lupin
Merci des efforts que vous avez fait pour m'aidez.
A force de recherche, j'ai trouve le projet d'un ingenieur qui faisait - entre autres - ce que je recherchait.
Ca m'a pris 3 heures pour l'epurer et n'en garder que l'essentiel.
Du coup ca n'est pas aussi propre que son programme mais c'est nettement plus concis. Je le mets pour le cas ou quelqu'un en aurait besoin.
-----------------------------------------------
Option Explicit
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
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 Sub Form_Load()
Const VBREG_HKEY_CURRENT_USER As Long = &H80000001
Const SousCle As String = "Software\Microsoft\Protected Storage System Provider"
Const VBREG_KEY_ENUMERATE_SUB_KEYS As Long = &H8
Dim STR_name As String
Dim last_key_open As Long
Dim Resultat As Long
Dim TheGoodOne As String
Resultat = RegOpenKeyEx(VBREG_HKEY_CURRENT_USER, SousCle, 0&, ByVal VBREG_KEY_ENUMERATE_SUB_KEYS, last_key_open)
STR_name = String(513, Chr$(0))
Resultat = RegEnumKey(last_key_open, 0, ByVal STR_name, 512)
TheGoodOne = Left$(STR_name, InStr(1, STR_name, Chr$(0)) - 1)
MsgBox (TheGoodOne)
End
End Sub
--------------------------------
ps: form_load pour l'exemple evidemment ! :)
re ps : le source que tu viens de mettre ne me donne pas ce resultat. Il ne fonctionne que lorsque la cle est complete.
re re ps : ENCORE MERCI DE VOTRE AIDE!
A force de recherche, j'ai trouve le projet d'un ingenieur qui faisait - entre autres - ce que je recherchait.
Ca m'a pris 3 heures pour l'epurer et n'en garder que l'essentiel.
Du coup ca n'est pas aussi propre que son programme mais c'est nettement plus concis. Je le mets pour le cas ou quelqu'un en aurait besoin.
-----------------------------------------------
Option Explicit
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
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 Sub Form_Load()
Const VBREG_HKEY_CURRENT_USER As Long = &H80000001
Const SousCle As String = "Software\Microsoft\Protected Storage System Provider"
Const VBREG_KEY_ENUMERATE_SUB_KEYS As Long = &H8
Dim STR_name As String
Dim last_key_open As Long
Dim Resultat As Long
Dim TheGoodOne As String
Resultat = RegOpenKeyEx(VBREG_HKEY_CURRENT_USER, SousCle, 0&, ByVal VBREG_KEY_ENUMERATE_SUB_KEYS, last_key_open)
STR_name = String(513, Chr$(0))
Resultat = RegEnumKey(last_key_open, 0, ByVal STR_name, 512)
TheGoodOne = Left$(STR_name, InStr(1, STR_name, Chr$(0)) - 1)
MsgBox (TheGoodOne)
End
End Sub
--------------------------------
ps: form_load pour l'exemple evidemment ! :)
re ps : le source que tu viens de mettre ne me donne pas ce resultat. Il ne fonctionne que lorsque la cle est complete.
re re ps : ENCORE MERCI DE VOTRE AIDE!
25 mars 2005 à 00:55
voilà un exemple assez complet :-)
Lupin