OVH Cloud OVH Cloud

Base de registre

1 réponse
Avatar
magic
Bonjour,
Voila je cherche a modifier une valeur dans une clé je ne connais pas le nom de la clé car elle est differente sur chaque poste je connais juste son emplacement.
Est il possible avec un .reg de faire une modificaion generale (sorte de joker qui remplace le nom de la clé) !
Si quelqu'un peu m'aider merci

1 réponse

Avatar
Jean-Claude BELLAMY
Dans le message news: ,
magic s'est ainsi exprimé:

Bonjour,
Voila je cherche a modifier une valeur dans une clé je ne connais pas
le nom de la clé car elle est differente sur chaque poste je connais
juste son emplacement. Est il possible avec un .reg de faire une
modificaion generale (sorte de joker qui remplace le nom de la clé) !


Non ce n'est pas possible de cette façon.
Il faut utiliser la classe "StdRegProv" de WMI

Puis tu dois effectuer au préalable une énumération des valeurs contenues
dans la clef, à l'aide de la fonction "EnumValues"
Ensuite, à l'aide d'une expression régulière, effectuer une comparaison
entre le nom de chaque entrée et le nom générique prédéfini.


const HKCR = &H80000000
Const HKCU = &H80000001
const HKLM = &H80000002
Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7

strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!" & _
strComputer & "rootdefault:StdRegProv")

' Définir ici la clef à explorer
strKeyPath = "SOFTWAREMicrosoft..........."

' Définir ici le nom de la valeur à tester
' Avec caractères génériques éventuels ("?" et/ou "*")
ValRef="PathName..........."
' Adaptation des wildcards "?" et "*" à l'expression régulière
ValRef=Replace(ValRef,"?",".")
ValRef=Replace(ValRef,"*","[w.]*") & "$"


Dim sNames,iTypes

lRC = oReg.EnumValues(HKLM, strKeyPath, sNames, iTypes)
If (lRC = 0) AND (Err.Number = 0) AND (NOT IsNULL(iTypes)) _
AND (NOT IsNull(sNames)) Then
For i = LBound(sNames) To UBound(sNames)
if RegExpTest(ValRef,sNames(i) then
' OK : La valeur correspond
...
...
end if
next


Function RegExpTest(patrn, strng)
RegExptestúlse
Dim regEx, Match, Matches
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = false
Set Matches = regEx.Execute(strng)
If matches.count>0 Then RegExptest=true
End Function

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *