有时需要在应用程序安装过程中修改 Windows 注册表设置。最近,我对卸载后无法恢复这些设置的应用程序感到沮丧。当我更多地思考这个问题时,我突然想到可能没有一个好的(或有效的)方法来保存和恢复注册表设置。以以下事件序列为例:

  1. 应用程序 A 拥有文件扩展名的“打开”操作 .abc.
  2. 应用程序 B 已安装,并劫持文件扩展名的“打开”操作 .abc.
  3. 应用程序 A 已卸载。
  4. 应用程序 B 已卸载。

在步骤 3 中,如果应用程序 A 足够智能,它将检测到它不再拥有 Open 操作,因此将跳过任何恢复它的尝试。

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

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

这只是我可以想象的许多糟糕情况之一,其中没有明显的唯一“正确”解决方案。我的下一个项目将需要在安装过程中更改注册表,我想知道卸载的最佳或推荐做法。不幸的是,我已经被当前商业软件包中糟糕的卸载实践所困扰,所以我知道这里没有关于最佳实践的共识,而且要么需要做很多工作才能正确完成,要么是注册表中的设计缺陷, 或两者。

这对我来说是一个非常现实的编程问题。我将其标记为主观,因为我不确定是否存在一刀切的方法 正确的 回答这个问题。请随意不同意。

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top