OVH Cloud OVH Cloud

Y'a t-il un moyen de changer le nom d'une clef dans la base de registre sous VB2005

4 réponses
Avatar
Claude
Bonjour,
Y'a t-il un moyen de changer le nom d'une clef dans la base de registre en
vb2005 ?
dans la class registry j'ai rien vu de cela.
Car dans un programme je suis obliger de devoir faire cela.
Actuellement le seul moyen est de mettre toutes les valeurs des sous-clefs
dans un array,
puis ensuite de détruire celle-ci et de la recréer sous le nouveau nom et
d'y recoller toutes les valeurs.

Ce qui est assez long si beaucoup de sous-clefs.

Merci

Claude

4 réponses

Avatar
TroXsA
Bonjour,


http://www.troxsa.info/index.php?option=com_content&task=view&id0&Itemid=2
ça devrais repondre a vos questions ?


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Claude" a écrit dans le message de news:
4408b60f$0$29214$
Bonjour,
Y'a t-il un moyen de changer le nom d'une clef dans la base de registre en
vb2005 ?
dans la class registry j'ai rien vu de cela.
Car dans un programme je suis obliger de devoir faire cela.
Actuellement le seul moyen est de mettre toutes les valeurs des sous-clefs
dans un array,
puis ensuite de détruire celle-ci et de la recréer sous le nouveau nom et
d'y recoller toutes les valeurs.

Ce qui est assez long si beaucoup de sous-clefs.

Merci

Claude






Avatar
Claude
Merci
Mais non ça ne va pas.
je cherche à modifier de nom des subkey existantes qui contient des clefs
avec valeurs.
Pour détruire, créer ou modification de valeur clef je sais faire mais pas
renommer une subkey.
Comme ont peut le faire directement dans le registre d'un click droit sur
une SubKey

Bizarre que microsoft n'est pas prévu cela ?
Donc pour l'instant je reste sur ma solution posté dans mon 1er message
passage par tableau avant destruction de SubKey et recréation de celle-ci
sous un autre nom.

voici le code que j'utilise pour faire cela en vb2005 :

Public Sub SuppLecteur(ByVal Port As String, ByVal Designation As
String, ByVal NumLecteur As String)
Dim gsLecteurNumber As String = HKLM & CheminLecteur & "Lecteur" &
NumLecteur
Dim TabLecteur As Array
Dim intReelLecteur As String = 0, TabCountLecteur As Integer = 0
If NumLecteur <> "" And Port <> "" Then

TabLecteur CType(My.Computer.Registry.LocalMachine.OpenSubKey(CheminLecteur).GetSubKeyNames,
Array)
TabCountLecteur = UBound(TabLecteur)
Dim TabLecteurOK() As String = Nothing
Dim intL As Integer = 1
For i As Integer = 0 To TabCountLecteur
If Strings.Left(TabLecteur(i), 7) = "Lecteur" Then

ReDim Preserve TabLecteurOK(intL)
TabLecteurOK(intL) = CType(TabLecteur(i), String)
intReelLecteur += 1
intL += 1
End If
Next

If UBound(TabLecteurOK) = 1 Then Exit Sub ' Y'a qu'un lecteur ne
fait rien devient celui par defaut

Dim SavTabLecteur(8) As String
Dim casei As Integer = 0
For i As Integer = 1 To UBound(TabLecteurOK)


If TabLecteurOK(i) = ("Lecteur" & NumLecteur) Then

Dim strPort As String CStr(My.Computer.Registry.GetValue(gsLecteurNumber, REG_VAL_DDE_GEN_Port,
""))
Dim strDesignCom As String My.Computer.Registry.GetValue(gsLecteurNumber, REG_VAL_DDE_GEN_DesignCom,
"")
If strPort = Port Then
If strDesignCom = Designation Then
My.Computer.Registry.LocalMachine.DeleteSubKey(CheminLecteur
& "" & TabLecteurOK(i))
intReelLecteur -= 1
ValidParamPort(CStr(intReelLecteur), 0, "0")
'Décrémente de -1 le nbr de Lecteur
TabLecteurOK(i) = ""
'Ont boucle sur les suivants
If NumLecteur = UBound(TabLecteurOK) Then Exit
For 'si c'était le dernier lecteur rien à faire
NumLecteur += 1
For ii As Integer = NumLecteur To
UBound(TabLecteurOK)
ReDim SavTabLecteur(8)
For j As Integer = 1 To 9 'Sauve dans le
tableau les données du Lecteur suivant case de 1 a 9
SavTabLecteur(casei) LoadParamPortReg(j, ii)
casei += 1
Next
'et supprime sa clef
My.Computer.Registry.LocalMachine.DeleteSubKey(CheminLecteur
& "" & TabLecteurOK(ii))
'restaure sa clef index-1 et les données
casei = 0
For j As Integer = 1 To 9 'restaure les
données du Lecteur suivant
ValidParamPort(SavTabLecteur(casei), j,
(ii - 1))
casei += 1
Next
Next
Exit For
End If
End If
End If
Next
End If
End Sub


"TroXsA" a écrit dans le message de news:
duk3d5$3tq$

Bonjour,


http://www.troxsa.info/index.php?option=com_content&task=view&id0&Itemid=2
ça devrais repondre a vos questions ?


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Claude" a écrit dans le message de news:
4408b60f$0$29214$
Bonjour,
Y'a t-il un moyen de changer le nom d'une clef dans la base de registre
en vb2005 ?
dans la class registry j'ai rien vu de cela.
Car dans un programme je suis obliger de devoir faire cela.
Actuellement le seul moyen est de mettre toutes les valeurs des
sous-clefs dans un array,
puis ensuite de détruire celle-ci et de la recréer sous le nouveau nom et
d'y recoller toutes les valeurs.

Ce qui est assez long si beaucoup de sous-clefs.

Merci

Claude










Avatar
TroXsA
Ben !!!
il y a le renomage, regarde bien

Quand tu parle de SubKey c'est quoi ?
-DossierReg
---SousDossierReg -------------- NomClef --------------ValeurDonnée



www.troxsa.info
Avatar
Claude
Le renomage est sur 'SousDossierReg' et non le reste
Si j'ai :

-Lecteur1
----- MaVar : MaDonnée
----- etc...
-Lecteur2
----- MaVar : MaDonnée
----- etc..
-Lecteur3
----- etc ..

Je supprime Le dossier (SubKey) Lecteur2, il faut que je renomme le Dossier
Lecteur3 en Lecteur2
en gardent le contenu du dossier (SubKey)


"TroXsA" a écrit dans le message de news:

Ben !!!
il y a le renomage, regarde bien

Quand tu parle de SubKey c'est quoi ?
-DossierReg
---SousDossierReg -------------- NomClef --------------ValeurDonnée



www.troxsa.info