- 締切済み
レジストリキーの削除方法(VC++6.0)
VC++ で、 SetRegistryKey 関数を用いてレジストリキーへの登録を行っています。 アプリケーション削除時に、 アプリケーションに関するレジストリキーの登録を一括削除するために、 これと逆の操作を行いたいのですが、どのようにすればよいのでしょうか? 読み込み、書き込みの GetProfileString WriteProfileString 関数はあるのですが、削除用の関数が見当たりません。 ご存知の方お教えいただけますでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jun_l
- ベストアンサー率18% (4/22)
>HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」 >のような構成になっている場合の、 「__software_name__」 一式の削除の仕方をご教授いただけませんでしょうか。 RegOpenKeyExで__my_name__をOpenして、そこでRegDeleteKey()で__software_name__を消せばよかったはずです。 消したいキーのひとつ上のキーを開くはずです。 もちろんOpneするときにアクセスの権限で消せるようにしないとだめですけど。 MSDNにはNTではサブキーを持っていたら消せないと書いてありますね。。。
- hanimaro
- ベストアンサー率44% (22/50)
RegOpenKeyEx()で削除したいキーを開いて そのハンドルをRegDeleteKey()に渡してやればまとめて消せます。
あんまりレジストリいじらないので 自信はないですが、 RegDeleteKey() RegDeleteValue() このあたりでは? 見当違いでしたらすみません。
補足
回答をありがとうございます。 確かに、おっしゃる通りの関数で削除可能なようです。 ありがとうございました。 現在Win2000を使っているのですが、 1つ1つのキーについて、上記の関数を実行しないと削除できないようです。 レジストリエディタで自分で開発したプログラムの項目を見ると、 「HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」 のような構成になっているのですが、 ここで、 「__software_name__」 以下をごっそり削除したいと思うのですが、 よい方法をご存知でしたらお教えいただけますと幸いです。
補足
回答ありがとうございます。 しかしやはり、具体的な方法が今ひとつわかりません。 「まとめて消せる」というのは、1つ1つ消すのとは異なるのですね。 大変申し訳ないのですが、 「HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」 のような構成になっている場合の、 「__software_name__」 一式の削除の仕方をご教授いただけませんでしょうか。