[R] A la recherche de la fonction RegRename

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

[R] A la recherche de la fonction RegRename

#1

Message par FernandG »

Bonsoir à tous,

Je suis à la recherche d'un petit bout de code, d'une petite fonction pour renommer une clé dans la base de registre :!:

J'ai cherché rapidement et n'ayant rien trouvé, j'ai écrit ou plutôt j'ai bidouillé rapidement :wink: le code ci dessous. Une façon détourné d'arriver à mes fins.

Donc à défaut de trouver mon bonheur, qu'en pensez-vous, moyen de l'améliorer de manière significative ? Une vrai fonction RegRename caché quelque part :?:

Merci d'avance de votre aide et de vos conseils à ce sujet.

Bonne soirée.
FernandG

Code : Tout sélectionner

RegRename("HKEY_LOCAL_MACHINE\SOFTWARE\OldKey", "HKEY_LOCAL_MACHINE\SOFTWARE\NewKey")

MsgBox(64, "Info", "Fin")

Func RegRename($key_search, $key_replace)
    $file = @TempDir & '\' & @Computername & '.reg'
    If FileExists($file) Then FileDelete($file)
    RunWait('regedit /e ' & $file & ' "' & $key_search & '"', "C:\", @SW_HIDE)
    $fichier = FileOpen($file, 0)
    If $fichier = -1 Then
        MsgBox(16, "Erreur", "Impossible d'ouvrir le fichier : " & $file)
        Exit
    EndIf
    While 1
        Dim $new
        $ligne = FileReadLine($fichier)
        If @error = -1 Then ExitLoop
        If StringInStr($ligne, $key_replace) Then $ligne = StringReplace($ligne, $key_search, $key_replace)
        $new = $new & $ligne & @CRLF
    Wend
    FileClose($fichier)
    $fichier = FileOpen($file, 2)
    If $fichier = -1 Then
        MsgBox(16, "Erreur", "Impossible d'ouvrir le fichier : " & $file)
        Exit
    EndIf
    FileWrite($fichier, $new)
    FileClose($fichier)
    RunWait('regedit /s ' & $file, "C:\", @SW_HIDE)
    RegDelete($key_search)
    FileDelete($file)
EndFunc
 
Modifié en dernier par FernandG le mer. 18 févr. 2009 23:37, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] A la recherche de la fonction RegRename

#2

Message par Tlem »

Un peut plus long, mais sans fichier ni Regedit (Donc plus rapide et peut être plus 'fiable') ici : http://www.autoitscript.com/forum/index ... opic=13374
Juste à rajouter le Regdelete pour finir. ;)

_Regclone.au3
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#3

Message par FernandG »

Bonsoir,

Tlem, je me rends compte que je ne t'ai jamais remercié, faut mieux tard que jamais non ? :D

Alors merci pour le _Regclone.au3

Bonne nuit.
AutoITement.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#4

Message par Tlem »

Aucun problème. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Steph
Niveau 3
Niveau 3
Messages : 38
Enregistré le : sam. 21 févr. 2009 17:53
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#5

Message par Steph »

Salut,

excellent comme fonction ! merci egalement au passage.

Stéf
Steph
Niveau 3
Niveau 3
Messages : 38
Enregistré le : sam. 21 févr. 2009 17:53
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#6

Message par Steph »

Salut,

Je serais à la recherche d'une fonction capable de mettre en Backup, cloné ou autres, non pas certaines clé de registre mais certaines valeurs ! en gros une fonction tel _regClone mais qui renommerait certaines entré de la clef et non la clé elle-meme !.

en gros:

Code : Tout sélectionner

$A = ("HKEY_CURRENT_USER\Software\7-Zip", "Lang")
$B = ("HKEY_CURRENT_USER\Software\7-Zip", "LangBackup")

_fonction($A, $B)
Voilà, si quelqu'un pourrait m'aider ! merci d'avance

Sinon je me suis creer une petite fonction permettant de faire des backup et qui utilise _regClone ! voir:

Code : Tout sélectionner

Func _regBackup($Key)
    $Keyb = $Key & "Backup"
    RegRead($Key, "")
    If @error <> 1 Then 
        _regClone($Key, $Keyb)
        RegDelete($Key)
    EndIf
EndFunc
Par contre je bloque un peu pour creer la fonction inverse ! à savoir _regRestore, si quelqu'un pourrait egalement m'aider, merci d'avance.

cordialement,

Stéphane
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#7

Message par Tlem »

Est-ce que ceci répond à votre attente ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Steph
Niveau 3
Niveau 3
Messages : 38
Enregistré le : sam. 21 févr. 2009 17:53
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#8

Message par Steph »

Tlem a écrit :Est-ce que ceci répond à votre attente ?
oui, parfaitement ! imppec !
fonctionne comme cela alors dans mon cas:

Code : Tout sélectionner

_RegValMove("HKEY_CURRENT_USER\Software\7-Zip", "Lang", "LangBackup", "")
sinon pourriez-vous juste jeter un oeil à l'autre demande dans mon precedent poste à savoir: "Par contre je bloque un peu pour creer la fonction inverse ! à savoir _regRestore, si quelqu'un pourrait egalement m'aider, merci d'avance.".

Voilà, cdt
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] A la recherche de la fonction RegRename

#9

Message par Tlem »

La fonction _RegValMove() vous permet de déplacer une valeur de clé, donc vous pouvez la stocker quelque part puis la restaurer ultérieurement ce qui revient à faire ce que vous demandez.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre