Bonjour,
Dans une action personnalisée (dérivée de System.Configuration.Install.Installer) exécutée par un installeur, je dois lire des valeurs dans la base de registre (HKCU) pour récupérer la version courante d'AutoCAD.
Ceci a parfaitement fonctionné pendant des années avec des installeurs créés avec Visual Studio 2010 Professionnel (Programme d'installation Visual Studio), puis avec Visual Studio 2013 Community Edition et l'extension Visual Studio Installer Projects.
Depuis quelques temps, la même fonction (CF ci-dessous) retourne bien la valeur recherchée quand elle est appelée depuis une application console par exemple, mais, depuis l'installeur, le premier appel à RegistryKey.GetValue() retourne systématiquement null. Constatation faite avec Windows 7 64 bits.
J'ai posté un message similaire sur MSDN, mais n'ayant toujours pas de réponse, j'espère trouver de l'aide ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public static ProductKey GetCurrentProductKey() { string key = @"Software\Autodesk\AutoCAD"; using (RegistryKey root = Registry.CurrentUser.OpenSubKey(key)) { if (root == null) throw new NullReferenceException( "La clé 'HKCU\\" + key + " est introuvable."); string curver = (string)root.GetValue("CurVer"); // <- Retourne null depuis l'installeur if (string.IsNullOrEmpty(curver)) throw new NullReferenceException( "La valeur 'CurVer' de la clé 'HKCU\\" + key + "' est introuvable."); key += "\\" + curver; using (RegistryKey rKey = Registry.CurrentUser.OpenSubKey(key)) { curver = (string)rKey.GetValue("CurVer"); if (string.IsNullOrEmpty(curver)) throw new NullReferenceException( "La valeur 'CurVer' de la clé 'HKCU\\" + key + "' est introuvable."); return new ProductKey(key + "\\" + curver); } } }
Partager