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

Windows 7 作为开发人员,我应该如何使用Windows Vista(和Windows 7)中的特殊文件夹?,windows-7,windows-vista,special-folders,Windows 7,Windows Vista,Special Folders,我应该在哪里保存与我的应用程序相关的数据?我应该在哪里保存配置文件?我应该在哪里保存临时文件?我应该在“文档”中这样做吗?“应用数据”?等等 将数据保存到磁盘的最佳实践是什么(我想,特殊文件夹的最佳实践?!)?AppData应该是自动配置和配置文件,文档应该是用户保存的文件。我会把在多个系统中有用的任何东西放在AppData/Roaming中,把其他任何东西(特定于机器)放在AppData/Local或LocalLow中。对于临时文件,请使用Temp目录。通常,Windows最佳做法是遵循适当的

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


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

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

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

这样做的好处是,如果Windows改变了某些东西,它不会坏得很厉害,并且尊重人们可能有的奇怪配置

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

:应用程序所需的所有内容均为“每用户”数据,不属于其他类别。标准配置文件将放在这里

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

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

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

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

来自:

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

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

我同意。我讨厌我安装的应用程序在(我的)文档中创建目录和/或存储文件。你能从环境的角度来翻译你的答案吗。SpecialFolder枚举?GetFolderPath(Environment.SpecialFolder.xxx)+1以获得有用的答案,特别是关于“每个用户”的区别。但我不清楚粗体的名字是什么。。。文件夹的文字名称?不图书馆?.NET用于引用文件夹的某种抽象?@LarsH:“但我不清楚粗体的名称是什么…”它们是.NET环境.SpecialFolder枚举常量-请尝试单击它们。:-)