質問

レジストリキーを削除しようとしていますが、これまでのところ、正常と思われるコードを試しました。

        RegistryKey delete = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options");
        delete.DeleteSubKeyTree("MyPaintApp");
        delete.Close();

しかし、エラーが発生します。

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.

私は自分の問題をグーグルで検索し、StackOverFlowを検索し、いくつかのソリューションを適用しましたが、すべてが私が使用しているのと同じ方法を使用しているようですので、私はうんざりしているので、それを手伝ってくれることを願っています。

編集:申し訳ありませんが、RegistryKeyパスでLocalMachineの代わりにCurrentUserを使用しました。それが問題でした。

役に立ちましたか?

解決

のドキュメント OpenSubKey 州:

返品値
タイプ:Microsoft.Win32.RegistryKey
サブキーは要求され、操作が失敗した場合はnull。

したがって、キーを開くと失敗したようです。おそらくそれが存在しないからです:

指定されたサブキーが見つからない場合、nullが返されます。

私のwin7 compで、 Image File Execution Options サブキーは存在しません。


しかし、あなたがその部分を修正しても、それはまだ失敗します。の過負荷 OpenSubKey あなたが使用していることは次のように文書化されています:

読み取り専用としてサブキーを取得します。

したがって、使用する必要があります OpenSubKey(path,true), 、@lasseespeholtがお勧めするように。

http://msdn.microsoft.com/en-us/library/z9f66s0a.aspx

他のヒント

使用してみてください Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);.

ここで詳細: registrykey.deletesubkeytreeメソッド(文字列).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top