- PR -

vsのインストーラで作成したレジストリキーをアンインストールで削除したい(Vista)

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-07-17 15:55
VS2005のインストーラでレジストリHKEY_LOCAL_MACHINE/Software/会社名/製品名に書き込みを行っています。
アンインストール時にこの作成したキーを削除したいのですが、インストーラでは削除できませんでした。

そこでアンインストール時のカスタム動作で削除してはとどうかと考え、
Installerクラスを継承して、アンインストール時にレジストリを削除するクラスを作成し、そのdllをカスタム動作に設定しました。

XPでは期待通り
インストール時にHKEY_LOCAL_MACHINE/Software/会社名/製品名にキーを書き込み
アンインストール時にHKEY_LOCAL_MACHINE/Software/会社名/製品名を削除することができました。

Vistaでは
インストール時にHKEY_LOCAL_MACHINE/Software/会社名/製品名にキーを書き込みすることはできましたが
アンインストール時にHKEY_LOCAL_MACHINE/Software/会社名/製品名を削除しようとするとエラーが発生し削除できません。

エラー内容:System.ArgumentException: サブキーが存在しないため、サブキー ツリーを削除できません。

レジストリ削除コード:Microsoft.Win32.Registry.LocalMachine.DeleteSubKeyTree(String.Format("software\\{0}\\{1}", manufacturer, productName))


VistaではUACでHKEY_LOCAL_MACHINEへの書き込みはリダイレクトされるとのことですが
アンインストール時のカスタム動作もリダイレクト先を削除しに行っているのかと思い
HKEY_CURRENT_USER/Software/classes/VirtualStore/MACHINEに会社名/製品名のキーを手動で作成後、アンインストールを行いましたが
同様のエラーが発生します。

質問1:
Vistaで、インストーラでレジストリ(HKEY_LOCAL_MACHINE/Software)に作成したキーをアンインストールで削除するにはどうすればよいでしょうか?

質問2:
そもそもVistaで、インストーラでレジストリ(HKEY_LOCAL_MACHINE/Software)にキーを作成すること自体いけないことなのでしょうか?

質問3:
Vistaですべてのユーザにインストールした場合、すべてのユーザで共有されるべき情報はどこに保存すればよいのでしょうか?

ご教示お願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)