作为开发者,我应该如何使用Windows Vista(和Windows 7)中的特殊文件夹?

问题描述 投票:0回答:5

我应该在哪里保存与我的应用程序相关的数据?我应该在哪里保存配置文件?我应该在哪里保存临时文件?我应该在“文档”中进行吗? “应用程序数据”?等等...

将数据保存到磁盘的最佳实践是什么(我猜,特殊文件夹的最佳实践?!)?

windows-7 windows-vista special-folders
5个回答
28
投票

ApplicationData:您的应用程序所需的所有内容作为“每个用户”数据,并且不属于其他类别。标准配置文件将放在此处。

CommonApplicationData:所有非“每用户”数据。

LocalApplicationData:每个用户的非漫游数据。例如,您想要确保仅存储在本机上的所有内容(例如机器激活码,通常还缓存/临时数据)。标准临时文件将放在此处。

MyDocuments:用户实际将其识别为“可识别的单个文档”的用户数据。

如果你不关心文件名,还可以使用 tempfile API 在

temp
目录中生成临时文件。您不应该手动执行此操作。例如,在 .NET 中,您可以使用
Path.GetTempFileName()
来实现此目的。


10
投票

来自 Windows 7 客户端软件徽标计划

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

1
投票

AppData应该是自动配置和配置文件,文档应该只是用户保存的文件。我会将在多个系统中有用的任何内容放在 AppData/Roaming 中,并将其他任何内容(特定于计算机)放在 AppData/Local 或 LocalLow 中。对于临时文件,请使用 Temp 目录。


1
投票

一般来说,Windows 最佳实践是遵循适当的环境变量。您想要保留的配置数据应放在 %APPDATA% 中,临时文件应放在 %TEMP% 中。

这样做的优点是,如果 Windows 发生更改,不会造成严重破坏,并且尊重人们可能拥有的奇怪配置。

此外,我同意其他答案,即“文档”仅适用于用户创建的数据,并且只能在提示后使用。


0
投票

此外,您应该使用 SHGetFolderPath 或 SHGetKnownFolderPath(在 Vista+ 中)来获取路径。这将为您提供当前系统上的正确位置,无论当前安装的版本或语言如何。切勿对您正在使用的任何路径进行硬编码。

© www.soinside.com 2019 - 2024. All rights reserved.