(EN : Find and Replace / Search and Replace a value - or a part of a value - in the Windows registry)
L'éditeur de base de registres de Windows permet d'effectuer des recherches de valeurs ou de clés au sein de la base. Par contre, il n'existe pas de menu, pourtant très utile, permettant de Remplacer des valeurs comme n'importe quel éditeur de texte ... On doit rechercher les valeurs une à une et remplacer à la main : pas très pratique !!
On peut éventuellement s'en sortir en exportant toute la base de registres, puis en remplaçant les valeurs idoines dans le fichier ainsi exporte, puis enfin en ré-important la base de registres. Mais là aussi on se heurte à des soucis de clés ou de valeurs en cours d'utilisation par des processus (message "Some keys are open by the system or other processes" - "are open" tel quel sur le message, ;-) et RegEdit s'arrête sans continuer les remplacements :-( )...
La solution : utilisation de l'outil REGFIND.EXE - "Registry Search" - du Ressource Kit de Windows 2000 (malheureusement pas présent dans le Ressource Kit de Windows 2003). Cet outil m'a sauvé la vie aujourd'hui, car suite à un changement inopiné de lettre de lecteur (de K:\ il est passé à D:\, un serveur ne retrouvait plus ses petits :-)
Utilisation très simple:
REGFIND "K:\" -r "D:\"
Remplace toutes les chaînes de caractère dans les valeurs des clés qui contiennent "K:\" par la chaîne "D:\"
Et voilà, tous les services ont redémarré sans souci !
On peut bien sûr choisir à partir de quelle clé veut-on trouver ou remplacer une valeur, préciser à l'outil que l'on veut ignorer la casse - majuscules/minuscules -, etc, bref, un outil tout simple, mais parfois ô combien utile ! ... c.f. l'aide de l'outil dont un extrait est copié ci-dessous...
Plus d'infos (extrait de l'aide de l'outil):
usage: REGFIND [-m \\machinename | -h hivefile hiveroot | -w Win95 Directory]
[-i n] [-o outputWidth]
[-p RegistryKeyPath] [-z | -t DataType] [-b | -B] [-y] [-n]
[searchString [-r ReplacementString]]
where: -m specifies a remote Windows NT machine whose registry is to be manipula
ted.
-h specifies a specify local hive to manipulate.
-w specifies the paths to a Windows 95 system.dat and user.dat files
-i n specifies the display indentation multiple. Default is 4
-o outputWidth specifies how wide the output is to be. By default the
outputWidth is set to the width of the console window if standard
output has not been redirected to a file. In the latter case, an
outputWidth of 240 is used.
-p RegistryKeyPath specifies where to start searching
-t specifies which registry types to look at:
REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ
REG_DWORD, REG_BINARY, REG_NONE
Default is any of the _SZ types
-b only valid with _SZ searches, and specifies that REGFIND should
look for occurrences of the searchString inside of REG_BINARY data.
May not be specified with a replacementString that is not the same len
gth
as the searchString
-B same as -b but also looks for ANSI version of string within REG_BINARY
values.
-y only valid with _SZ searches, and specifies that REGFIND should
ignore case when searching.
-n specifies to include key and value names in the search.
May not specify -n with -t
-z specifies to search for REG_SZ and REG_EXPAND_SZ values that
are missing a trailing null character and/or have a length that is
not a multiple of the size of a Unicode character. If -r is also
specified then any replacement string is ignored, and REGFIND will
add the missing null character and/or adjust the length up to an
even multiple of the size of a Unicode character.
searchString is the value to search for. Use quotes if it contains
any spaces. If searchString is not specified, just searches based on
type.
-r replacementString is an optional replacement string to replace any
matches with.
-- Fin de l'extrait --