13

关于 SO 的许多问题都说“Windows 开发人员指南”或“Windows 设计指南”说您不应该将临时数据或程序数据写入 Program Files 区域,但据我所知,它们都没有真正链接到文档说了这么多。搜索 MSDN 没有产生任何结果。Windows 将使该区域成为只读区域,因此它可以由操作系统强制执行,但这并不意味着开发人员无论如何都不会尝试在那里写入(例如,在移植旧版本、XP 和更早版本的程序时)。

我意识到在 Windows 开发的后期问这个问题似乎很奇怪(因为,正如下面的评论者指出的那样,操作系统已经强制执行了十多年),但有时需要一份这样说明的文件才能满足人们.

考虑到这一点,Microsoft 是否发布了一份文档说明我们不应将应用程序数据写入 Program Files 区域,如果是,它在哪里?

4

2 回答 2

13

来自Windows 7 客户端软件徽标计划的技术要求

默认安装到正确的文件夹

用户应该对文件的默认安装位置有一致且安全的体验,同时保留将应用程序安装到他们选择的位置的选项。还必须将应用程序数据存储在正确的位置,以允许多人使用同一台计算机,而不会破坏或覆盖彼此的数据和设置。


Windows 在文件系统中提供特定位置来存储程序和软件组件、共享应用程序数据以及特定于用户的应用程序数据:

  • 默认情况下,应用程序应安装到 Program Files 文件夹。由于为此文件夹配置了安全权限,用户数据或应用程序数据绝不能存储在此位置(已添加重点
  • 必须在计算机上的用户之间共享的所有应用程序数据都应存储在 ProgramData 中
  • 所有特定用户专有且不与计算机的其他用户共享的应用程序数据必须存储在 Users\<username>\AppData
  • 切勿直接写入“Windows”目录和/或子目录。使用正确的方法安装文件,例如字体或驱动程序
  • 在“每台机器”安装中,用户数据必须在首次运行时写入,而不是在安装期间写入。这是因为在安装时没有正确的用户位置来存储数据。应用程序在安装后尝试在机器级别修改默认关联行为将不成功。相反,必须在每个用户级别声明默认值,这可以防止多个用户覆盖彼此的默认值。

而且我很确定NT 系列的每个Windows 版本都有类似的东西可以追溯到Windows NT 4 甚至更早的版本。


另请参阅此问题


编辑:这篇文章中指向 Windows 7 徽标程序的原始链接不再存在。在这里,您可以找到指向Windows 桌面应用程序认证要求的当前链接。请参阅第 10 节,应用程序必须默认安装到正确的文件夹

于 2012-10-31T17:42:30.640 回答
0

在更高版本的 Windows(Vista、7,当然还有服务器版本)中,“特殊文件夹”(包括“程序文件”)的访问权限受到限制。即使您的程序被提升到有足够的权限写入这个文件夹,这仍然是一个坏主意。

我不知道任何说明这一点的准则,但有一个特殊文件夹列表及其用途。事实上,我可以为几乎所有类型的数据创建一个特殊文件夹,这意味着无需使用程序文件文件夹。特殊文件夹列表

于 2012-10-31T17:48:46.117 回答