我的卸载过程如何正确处理还原注册表项?

时间:2008-12-31 01:16:40

标签: registry uninstall

有时需要在应用程序安装期间修改Windows注册表设置。我最近对卸载这些设置时不恢复这些设置的应用程序感到沮丧。正如我对此的想法更多,我发现可能没有一种好的(或有效的)方法来保存和恢复注册表设置。以下列事件序列为例:

  1. 应用程序A拥有文件扩展名.abc的打开操作。
  2. 安装了应用程序B,并劫持了文件扩展名.abc的打开操作。
  3. 已卸载应用程序A.
  4. 已卸载应用程序B.
  5. 在第3步,如果应用程序A足够智能,它将检测到它不再拥有Open操作,因此将跳过任何恢复它的尝试。

    在第4步,应用程序B可以采取任何有效的操作吗?

    • 不执行任何操作会使Open操作指向已删除的可执行文件。
    • 恢复指向应用程序A的指针同样是已删除的可执行文件。
    • 不允许询问用户,因为这通常被认为超出了典型用户的技术技能。如果您不同意,则在步骤1和2中替换不同的注册表更改,您认为这些更改将超出用户回答的范围。
    • 删除操作同样需要用户稍后做出不知情的决定,否则会让用户无法使用某些功能。

    这只是我能想到的许多不良情况中的一种,其中没有明显的“正确”解决方案。我的下一个项目将在安装期间需要更改注册表,并且我想知道卸载的最佳或推荐的实践。不幸的是,我已经被当前商业软件包中的不良卸载做法所灼烧,所以我知道这里没有就最佳实践达成共识,要么做得很好,要么是注册表中的设计缺陷或两者兼而有之。

    这对我来说是一个非常真实的编程问题。我正在标记它是主观的,因为我不确定是否有任何一个适合所有人的 正确的 答案。请随意不同意。

1 个答案:

答案 0 :(得分:1)

如果您正在编写应用程序B,那么我会说首先不要劫持.abc扩展名的Open操作。在安装过程中,询问用户是否要将.abc文件与您的程序关联。在卸载期间,检查您的程序是否仍然关联。如果是这样,请取消关联文件扩展名,否则请不要管它。

如果还有另一个应用程序想要在卸载B后仍然与.abc文件关联,那么很难 - 让用户修复它。毕竟,他同意将.abc文件与您的应用程序关联,然后卸载您的应用程序。

相关问题