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

时间:2009-10-12 18:18:32

标签: windows-7 windows-vista special-folders

我应该在哪里保存与我的申请相关的数据?我应该在哪里保存配置文件?我应该在哪里保存临时文件?我应该在“文件”中这样做吗? “应用程序数据”?等...

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

5 个答案:

答案 0 :(得分:28)

ApplicationData :您的应用所需的所有内容都是“每用户”数据,不属于其他类别。标准配置文件将在此处。

CommonApplicationData :所有不是“每用户”数据的内容。

LocalApplicationData :每个用户和非漫游的数据。例如,您希望确保它只存储在此计算机上的所有内容(如计算机激活码,通常还包括缓存/临时数据)。标准临时文件将在这里。

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

如果您不关心文件名,还可以使用tempfile API在temp目录中生成临时文件。你不应该手动执行此操作。例如,在.NET中,您可以将Path.GetTempFileName()用于此目的。

答案 1 :(得分:10)

来自Windows 7 Client Software Logo Program

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

答案 2 :(得分:1)

AppData应该是自动配置和配置文件,文件应该只是用户保存的文件。我会把任何在AppData / Roaming中的多个系统中有用的东西,以及AppData / Local或LocalLow中的任何其他东西(特定于机器)。对于临时文件,请使用Temp目录。

答案 3 :(得分:1)

通常,Windows最佳做法是遵循适当的环境变量。您想要留下的配置数据应该是%APPDATA%,临时文件应该是%TEMP%。

这样做的好处是,如果Windows改变了事情并且尊重人们可能拥有的奇怪配置,那么不会破坏可怕的。

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

答案 4 :(得分:0)

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

相关问题