0

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

        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を使用しました。これが問題でした。

4

2 に答える 2

1

OpenSubKey州のドキュメント:

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

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

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

私のWin7compには、Image File Execution Optionsサブキーが存在しません。


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

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

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

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

于 2012-02-18T18:25:03.090 に答える
1

を使ってみてくださいRegistry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);

詳細はこちら:RegistryKey.DeleteSubKeyTreeメソッド(文字列)

于 2012-02-18T18:40:33.183 に答える