2011-02-09 6 views
0

私はfirefox拡張を書きました。私はそれがVisual Studio 2010 C#で開発されたサービスから読み込まれていることを確認したいと思います。私は研究し、キーを読み取るための数多くの異なるメソッドを試しました。「レジストリの読み込みに失敗しました:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。レジストリキー#1を読んでください

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

null参照表面はどこにありますか?どの線? –

+0

それは2行目のように見えるが、3行目でエラーが発生する –

+0

これは確かに指定されたサブキーが見つからないためです。簡単な「ソフトウェア」から検索されたキーを徐々に増やして、どこに行き詰まっているのかを確認することができます。 –

答えて

1

をあなたのサービスは、サービスの設定に指定されているアカウントで実行されますので、それはHKCUがマシンにログインすることができる現在のユーザーと異なる場合がありますことを覚えておいてください:ここで私が使用される1つの方法はあります。コードをテストするには、ローカルシステムではなくユーザーアカウントでサービスを実行してみてください。これはおそらく現在実行されているものです。

+0

私はローカルシステムからこのサービスを実行する必要があり、サービスはどのユーザーを知らないでしょう...現在、NSISインストーラは特定のユーザーに関係なくHKCUにキーを書き込みます。そして、私はregeditのHKCUの鍵を見ています。 –

+2

インストーラがHKCUに書き込む場合、インストーラを実行するユーザーのためにそのハイブに書き込むだけです。テストマシンに複数のユーザーを作成し、そのうちの1つとしてインストーラーを実行すると、もう1つはこのキーを持たないでしょう。 HKLMは、現在のユーザーだけでなく、本質的にすべてのユーザーであるキーを置く場所です。 –

関連する問題