• 締切済み

レジストリキーの削除方法(VC++6.0)

VC++ で、 SetRegistryKey 関数を用いてレジストリキーへの登録を行っています。 アプリケーション削除時に、 アプリケーションに関するレジストリキーの登録を一括削除するために、 これと逆の操作を行いたいのですが、どのようにすればよいのでしょうか? 読み込み、書き込みの GetProfileString WriteProfileString 関数はあるのですが、削除用の関数が見当たりません。 ご存知の方お教えいただけますでしょうか?

みんなの回答

  • jun_l
  • ベストアンサー率18% (4/22)
回答No.3

>HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」 >のような構成になっている場合の、 「__software_name__」 一式の削除の仕方をご教授いただけませんでしょうか。 RegOpenKeyExで__my_name__をOpenして、そこでRegDeleteKey()で__software_name__を消せばよかったはずです。 消したいキーのひとつ上のキーを開くはずです。 もちろんOpneするときにアクセスの権限で消せるようにしないとだめですけど。 MSDNにはNTではサブキーを持っていたら消せないと書いてありますね。。。

参考URL:
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_regdeletekey.htm
  • hanimaro
  • ベストアンサー率44% (22/50)
回答No.2

RegOpenKeyEx()で削除したいキーを開いて そのハンドルをRegDeleteKey()に渡してやればまとめて消せます。

mu_nya
質問者

補足

回答ありがとうございます。 しかしやはり、具体的な方法が今ひとつわかりません。 「まとめて消せる」というのは、1つ1つ消すのとは異なるのですね。 大変申し訳ないのですが、 「HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」 のような構成になっている場合の、 「__software_name__」 一式の削除の仕方をご教授いただけませんでしょうか。

noname#5824
noname#5824
回答No.1

あんまりレジストリいじらないので 自信はないですが、 RegDeleteKey() RegDeleteValue() このあたりでは? 見当違いでしたらすみません。

mu_nya
質問者

補足

回答をありがとうございます。 確かに、おっしゃる通りの関数で削除可能なようです。 ありがとうございました。 現在Win2000を使っているのですが、 1つ1つのキーについて、上記の関数を実行しないと削除できないようです。 レジストリエディタで自分で開発したプログラムの項目を見ると、 「HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」 のような構成になっているのですが、 ここで、 「__software_name__」 以下をごっそり削除したいと思うのですが、 よい方法をご存知でしたらお教えいただけますと幸いです。

関連するQ&A