Dans .Net 1.x, lorsque vous utilisez la méthode GetValue de la classe Microsoft.Win32.RegistryKey pour lire les données du registre, les données sont en réalité « traitées » ;
Par exemple, la valeur originale d'une certaine chaîne de données est
%SystemRoot%System32IoLogMsg.dll
Mais les données obtenues à l'aide de la méthode GetValue sont
C:WINDOWSSystem32IoLogMsg.dll
En d'autres termes, lors de la lecture de la chaîne dans le registre, le système développera pour vous les variables d'environnement de sa propre initiative.
Cela nous évite d'avoir à appeler la méthode Environment.ExpandEnvironmentVariables, mais à l'inverse, lorsque nous voulons copier une chaîne de registre intacte, nous sommes impuissants.
Dans .Net2.0, nous avons été agréablement surpris de constater que la classe Microsoft.Win32.RegistryKey présente un petit changement, c'est-à-dire qu'une nouvelle surcharge a été ajoutée à sa méthode GetValue :
Objet public GetValue (
nom de chaîne,
Objet valeur par défaut,
Options du RegistreValueOptions
) Le troisième paramètre de cette méthode est une énumération, et actuellement la seule valeur utile est DoNotExpandEnvironmentNames.
Spécifiez cette valeur et le résultat obtenu par GetValue correspond aux données qui n'ont pas été développées.