OVH Cloud OVH Cloud

Renommer une clef registre

5 réponses
Avatar
Arnaud Bodin
Bonjour,
je cherche le moyen de renommer une cl=E9 de registre en=20
ligne de commande via un script .cmd ou .bat.

Quelqu'un aurait-il une id=E9e, une astuce ou mieux encore=20
LA solution ?

Merci d'avance

5 réponses

Avatar
Jean-Claude BELLAMY
Dans le message 0b9b01c3c0d0$6cc423f0$,
Arnaud Bodin s'est ainsi exprimé :

Bonjour,
je cherche le moyen de renommer une clé de registre en
ligne de commande via un script .cmd ou .bat.

Quelqu'un aurait-il une idée, une astuce ou mieux encore
LA solution ?


Aussi étrange que cela puisse paraître, il n'existe AUCUNE fonction
"Microsoft" (dans advapi32) capable de renommer une clef ou une entrée!
(hormis depuis REGEDIT)
Moi-même j'ai cherché (dans tout le SDK, MSDN, Google, ...) , en vain.

Corroboré par cet éditeur d'un "toolkit" de la BDR
http://www.hallogram.com/registrytoolkit/
"Although the Microsoft registry classes provide basic
registry functionality, many useful features are missing.
The Registry Toolkit extends this functionality to include
renaming of keys, [...]"

Seul pb de cet outil : son prix (359 $ !)

Idem chez un autre (Unisyn.com : "Automate", qui coûte 349 $)

Dans mes applis, je contourne le problème de façon "agricole" comme suit :

- je crée une clef avec le nom désiré
(fonction "RegCreateKeyEx")

- j'énumère toutes les sous-clefs et toutes les entrées de la clef
à renommer
(fonctions "RegEnumKeyEx" et "RegEnumValue")
A partir de ces infos, je crée dans la nouvelle clef les sous-clefs
et entrées ayant les mêmes noms

- je recopie les contenus de chaque entrée de l'ancienne clef
dans les entrées respectives de la nouvelle
(fonction "RegSetValueEx")

- je supprime l'ancienne clef et ses sous-clefs
(fonction "SHDeleteKey", qui autorise la récursivité)

Ce n'est pas insurmontable, mais cela oblige à programmer.

J'ai vu que c'était d'ailleurs la méthode employée dans un article de Winnet
magazine :
"Copying and Renaming Registry Keys "
http://www.winnetmag.com/Articles/ArticleID/23604/pg/2/2.html

Mais tous les freewares que j'ai pu trouver qui renomment une clef sont tous
avec une interface graphique, et non pas en ligne de commande.
Il va falloir que je m'y mette ! ;+)

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

Avatar
Arnaud Bodin
-----Message d'origine-----
Dans le message 0b9b01c3c0d0$6cc423f0$,
Arnaud Bodin s'est
ainsi exprimé :


Bonjour,
je cherche le moyen de renommer une clé de registre en
ligne de commande via un script .cmd ou .bat.

Quelqu'un aurait-il une idée, une astuce ou mieux encore
LA solution ?


Aussi étrange que cela puisse paraître, il n'existe
AUCUNE fonction

"Microsoft" (dans advapi32) capable de renommer une clef
ou une entrée!

(hormis depuis REGEDIT)
Moi-même j'ai cherché (dans tout le SDK, MSDN,
Google, ...) , en vain.


Corroboré par cet éditeur d'un "toolkit" de la BDR
http://www.hallogram.com/registrytoolkit/
"Although the Microsoft registry classes provide basic
registry functionality, many useful features are
missing.

The Registry Toolkit extends this functionality to
include

renaming of keys, [...]"

Seul pb de cet outil : son prix (359 $ !)

Idem chez un autre (Unisyn.com : "Automate", qui coûte
349 $)


Dans mes applis, je contourne le problème de
façon "agricole" comme suit :


- je crée une clef avec le nom désiré
(fonction "RegCreateKeyEx")

- j'énumère toutes les sous-clefs et toutes les entrées
de la clef

à renommer
(fonctions "RegEnumKeyEx" et "RegEnumValue")
A partir de ces infos, je crée dans la nouvelle clef
les sous-clefs

et entrées ayant les mêmes noms

- je recopie les contenus de chaque entrée de l'ancienne
clef

dans les entrées respectives de la nouvelle
(fonction "RegSetValueEx")

- je supprime l'ancienne clef et ses sous-clefs
(fonction "SHDeleteKey", qui autorise la récursivité)

Ce n'est pas insurmontable, mais cela oblige à programmer.

J'ai vu que c'était d'ailleurs la méthode employée dans
un article de Winnet

magazine :
"Copying and Renaming Registry Keys "
http://www.winnetmag.com/Articles/ArticleID/23604/pg/2/2.h
tml


Mais tous les freewares que j'ai pu trouver qui renomment
une clef sont tous

avec une interface graphique, et non pas en ligne de
commande.

Il va falloir que je m'y mette ! ;+)

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


.
et bien Merci quand même pour toutes ces infos riches et
détailées, à l'image du site http://www.bellamyjc.org :)



Avatar
Pat
J'ai vu que c'etait d'ailleurs la methode employee dans un article de Winnet
magazine :

"Copying and Renaming Registry Keys "

Et c'est une mauvaise methode car elle date de 2 ans.
Les fonctions ont ete rajoutees depuis et il faut 5 lignes de code pour le faire.


--
Ce message a ete poste via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/

Avatar
Arnaud Bodin
-----Message d'origine-----

J'ai vu que c'etait d'ailleurs la methode employee dans
un article de Winnet


magazine :
"Copying and Renaming Registry Keys "

Et c'est une mauvaise methode car elle date de 2 ans.
Les fonctions ont ete rajoutees depuis et il faut 5
lignes de code pour le faire.



--
Ce message a ete poste via la plateforme Web club-
Internet.fr

This message has been posted by the Web platform club-
Internet.fr


http://forums.club-internet.fr/
.
Merci Pat, pourrais-tu m'en dire plus ? ;)



Avatar
Arnaud Bodin
-----Message d'origine-----
Dans le message ,
Pat s'est ainsi exprimé :

J'ai vu que c'etait d'ailleurs la methode employee
dans un article



de Winnet
magazine :

"Copying and Renaming Registry Keys "

Et c'est une mauvaise methode car elle date de 2 ans.
Les fonctions ont ete rajoutees depuis et il faut 5
lignes de code


pour le faire.


J'adore (:+(((() ce genre de réponse CREUSE !
On dirait un gamin s'écriant "même pas vrai!", mais
s'arrêtant là dans son argumentation!


Tu aurais pu nous dire lesquelles, puisque tu es si
averti !

(les fonctions et les CINQ lignes de code)

On peut effectivement utiliser la fonction "SHCopyKey" de
la SHLWAPI.DLL qui simplifie un peu.


"SHCopyKey recursively copies the subkeys and values
of the source subkey to the destination key.
SHCopyKey does not copy the security attributes
of the keys."

DWORD SHCopyKey(
HKEY hkeySrc,
LPCTSTR szSrcSubKey,
HKEY hkeyDest,
DWORD fReserved
);

J'ai écrit une appli, utilisant cette fonction, qui
permet le renommage de clef

http://www.bellamyjc.org/fr/systeme.html#regrenamekey


Mais cela ne permet pas de renommer une entrée...


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



M E R C I, et encore les mots me manque ... je viens de
tester "RenameReg", et c'est exactement ce que je
cherchais. Réactivité, efficacité ... comme d'hab ...