如果用户卸载您的程序,您将如何处理用户数据?

我是一个需要弹药的开发者。

如果用户select卸载程序,那么对于程序保存在HKEY_CURRENT_USER中的数据以及用户configuration文件的其他部分,您会做什么?

该程序将用户数据(日志等)存储在用户文件夹中。 客户想要卸载所有这些数据…为所有用户。 同时,一个普通的非pipe理员用户应该能够进行卸载。

我一直无法find一个白皮书,文件或其他说不应该这样做 。 closures是雷蒙德陈的职位: http : //blogs.msdn.com/oldnewthing/archive/2007/09/17/4948130.aspx

但是一篇博文是弱弹。

可选:在安装过程中创build%SYSTEMDRIVE%\ FooProgramData。 所有用户都写入这个文件夹。 我知道这很难看。 但这是我能想到的唯一可以满足“卸载所有文件必须清除”的要求的方法。

思考? 我需要一个更好的备用(如果存在的话)或一个坚实的白皮书,说明卸载不应删除用户数据的文档或徽标要求。

Solutions Collecting From Web of "如果用户卸载您的程序,您将如何处理用户数据?"

“与此同时,一个普通的非管理员用户应该能够进行卸载。”

非管理员帐户决不应该(也永远不能)更改其他用户的数据。

在这种情况下,你绝对可以做的绝对是删除当前用户的数据,即使这样你应该提示或给出警告。

跟雷蒙一起去,这可能只是一个博客文章,但雷蒙德可以被认为不是普通的博客:)

编辑:我刚刚找到http://msdn.microsoft.com/en-us/library/bb204770.aspx#uninstall_clean,但没有说任何明确的用户数据

卸载应删除所有的客户端数据,除非客户端不希望它:)

或者换个说法,一个通用的卸载程序应该让用户选择是否删除数据。

在你的情况下,如果你有一个特别想要删除数据的客户,我想这就是你要做的,但是如果卸载是由非运行的-admin,除非你建议并将数据存储在每个用户都有完整文件系统访问的地方。

我不知道Windows的特性,但作为一个用户,我希望我的数据不会迷路,如果我卸载软件。 一些论据是:

  • 其他程序可能能够处理相同的数据
  • 我以后可以改变主意,重新安装软件
  • 其他人可能需要的数据,我可以邮寄给他们

所有的每个用户数据的删除应该是一个单独的过程到卸载。

我的建议(和我们所做的)将是创建一个单独的“清理”实用程序,必须以管理员身份运行,并通过配置文件列举删除其他用户文件。 可选地,它也可以枚举用户注册表配置单元和删除其他注册表项等。我们的客户之一有自己的自定义脚本,正是这样做。

然后,我会提供客户这个清理工具,并说卸载后,如果你想删除所有的用户数据,然后使用这个。

考虑以下情况

  • 客户在安装新版本之前卸载
  • 主要升级(这将卸载旧版本,所以你需要知道这一点)
  • 意外卸载的用户谁不应该这样做,但有能力这样做

为我所能想到的所有用户删除这些数据的最简单的方法是利用Active Setup,并使用它来触发每个用户下次登录时运行的每个用户脚本。 数据在卸载过程中不会被删除,而是在下次登录时删除。 而且你会留下一些注册表项,但是这比枚举用户配置文件的可能性更小。

不会在卸载时删除用户和/或配置数据。 如果用户真的想要这一切,她应该自己做。

我知道我晚了几年,但现在我正在寻找这个答案,我遇到了以下新的MSDN文章: http : //msdn.microsoft.com/en-us/ library / windows / apps / jj553522.aspx 。

它与Metro Style应用程序有关,但可能与其他类型的应用程序有关。 他们的解释给出了不同类型的用户数据之间的一些必要的区别,并且可以帮助开发者决定是否删除文件。 没有这个区别,可以理解的是,在卸载过程中是否删除文件存在不同的意见:

应用程序频繁管理或交互的数据有两种:

应用程序数据

应用程序本身创建和管理的数据。 它是特定于特定应用的内部功能或配置的可变数据。 它包括运行时状态,用户首选项,参考内容(如字典应用程序中的字典定义)以及其他设置。 应用程序数据绑定到应用程序的存在,只对该应用程序有意义。

用户数据

用户在使用应用程序时创建和管理的数据。 它包括文档或媒体文件,电子邮件或通讯记录,或包含由用户创建的内容的数据库记录。 请注意,用户选择的首选项或应用配置选项被视为应用数据,而不是用户数据。 用户数据非常有用,独立于单个应用程序可能对多个应用程序有用或有意义。 通常这是用户想要独立于应用本身(例如文档)操纵或传输的数据。

注意这里显示的句子以粗体显示。 如果这些文件在没有应用程序的情况下是没有意义的,如果它们包含该应用程序的用户首选项(例如user.config ),那么即使它位于用户数据目录中,也不应该被视为用户数据。 它应该被认为属于应用程序,并在卸载时被删除。

这就是说,我仍然在寻找简单的方法来为其他用户做这个比当前的用户! 我正在考虑将所有数据移动到应用程序数据的目录中,以便我可以更轻松地将其删除,而不必在个人用户的用户数据存储区中混乱。

我最近的“聪明的想法”在程序第一次运行的时候,建议在相应的用户文件夹中创建“readme.txt”文件。 该文件应包含说明哪些文件是什么,也是一个免责声明与'感觉自由与清理这个文件夹':-)

只是为了澄清这个问题,我已经创建了一个,具体涉及到Windows徽标认证: Windows徽标清理卸载 。

我提出了一个老困境,但想知道微软推荐哪一个选择。