卸载软件时如何删除HKCU注册表项?

Ror*_*ory 8 registry windows-installer

当我的软件通过MSI安装时,它会在HKLM中创建一些注册表项.当人们使用该软件时,他们的个人偏好被保存到HKCU.卸载软件时,HKLM和HKCU注册表项被删除,但我认为只有正在运行卸载的用户的HKCU密钥才会被删除.它是否正确?如果是这样,我如何确保删除在同一台机器上使用我的软件的其他人的HKCU子项?

更新:在我的案例中保存的"个人偏好"不是用户选择的真实设置,而是应用程序在为该用户运行时存储的数据.所以这并不是用户想要保留的真实数据.在卸载时删除它似乎是正确的,因为如果重新安装应用程序它将没有任何用处.所以我想到目前为止最好的建议是Ed:不要使用注册表,尽管这并不是真正解决原始问题.

Dav*_*veE 3

简短的回答是你不知道。安装程序应该删除创建的条目,而不删除其他任何内容。如果您的应用程序在运行时创建每用户设置,则这些设置不属于安装例程。

如果您真的真的想这样做,您可以创建一个自定义操作并强制卸载以管理员身份运行,以便您可以访问所有用户配置单元。请注意 - 这完全是非标准行为,可能需要大量时间和系统资源来安装和卸载所有用户配置单元。如果您的卸载程序不小心,您可能会损坏系统级配置单元中的内容并使您的系统无法启动。

正如我在 sascha 回复的评论中提到的,Windows Installer 最佳实践说(说?)在卸载时保留自定义用户设置。这样,如果用户重新安装您的软件,他们的设置就可用。