2011-02-09 2 views
0

J'ai écrit une extension firefox et je veux vérifier qu'elle est chargée à partir d'un service développé dans visual studio 2010 C#. J'ai recherché et essayé de nombreuses méthodes différentes pour lire une clé et tout ce que j'ai obtenu est: "La lecture du registre a échoué: System.NullReferenceException: la référence d'objet n'est pas définie sur une instance d'un objet." Voici une méthode je:lire la clé de registre # 1

RegistryKey rKey1 = Registry.CurrentUser; 
RegistryKey rKey2 = rKey1.OpenSubKey("Software\\Mozilla\\Firefox\\Extensions"); 
string strKeyValue = rKey2.GetValue("[email protected]").ToString(); 
+0

Où est le surfaçage de référence nul? Quelle ligne? –

+0

il semble faire la ligne 2 ok mais l'erreur se produit à la ligne 3 –

+0

C'est certainement parce qu'il ne peut pas trouver la sous-clé spécifiée. Vous pouvez augmenter progressivement la clé recherchée à partir du simple "logiciel" pour voir où il se bloque. –

Répondre

1

Rappelez-vous que votre service est exécuté sous le compte qui est spécifié dans la configuration du service, il est donc HKCU peut être différent de l'utilisateur actuel qui peut être connecté à la machine. Pour tester votre code, essayez d'exécuter le service sous votre compte d'utilisateur au lieu du système local, qui est probablement ce qu'il est en cours d'exécution sous.

+0

Je dois exécuter ce service à partir du système local et le service ne saura pas quels utilisateurs ... en ce moment, le programme d'installation de NSIS écrit la clé à HKCU sans tenir compte des utilisateurs spécifiques. Et je regarde la clé dans HKCU dans regedit. –

+2

Si le programme d'installation écrit sur HKCU, il écrira uniquement dans cette ruche pour l'utilisateur qui exécute le programme d'installation. Je serais prêt à parier que si vous créez plusieurs utilisateurs sur une machine de test et exécutez l'installateur comme l'un d'entre eux, l'autre n'aurait pas cette clé. HKLM peut être l'endroit où placer la clé, qui est essentiellement tous les utilisateurs, au lieu de simplement l'utilisateur actuel. –

Questions connexes