'SpecialFolder.LocalApplicationData'和'SpecialFolder.ApplicationData'之间的区别?

时间:2012-03-14 19:56:05

标签: c# .net windows application-settings appdata

在我的系统上,%AppData%会导致ApplicationData C:\Users\<USER>\AppData\Roaming

但也有C:\Users\<USER>\AppData\Local
还有一些混淆D:\Users\<USER>\AppData\LocalLow

string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

我的问题是,我的应用程序应该在哪些位置保存其数据?

是否有指导方针可以使用这些地点?如果我选择了错误的位置,我是否会对问题保持开放?

3 个答案:

答案 0 :(得分:47)

启用漫游配置文件(在域环境中)时,会在计算机之间复制Roaming文件夹。将其用于要在计算机之间共享的应用程序数据。 但是不要在那里存储大文件 - 当你这样做时,IT部门不喜欢它,并且它会增加用户登录和注销文件时所用的时间。 / em>的

不会在计算机之间复制Local文件夹。将其用于特定于机器的应用程序数据。

LocalLow文件夹用于低权限任务(例如Internet Explorer)。你不应该担心它。

对于用户专门保存的文件,您应该将它们(默认情况下)放在Documents文件夹中。

答案 1 :(得分:9)

根据MSDN,不同之处在于LocalApplicationData停留在本地计算机上并且不漫游... ApplicationData确实漫游,例如,如果用户从不同的域登录到域电脑它会被同步......

LocalLow是指特定情况,例如在IE的“保护模式”下运行的BHO ......

对于标准应用程序,请始终使用ApplicationData。使用LocalApplicationData用于不应与用户漫游的内容......

答案 2 :(得分:3)

来自MSDN - Environment.SpecialFolder Enumeration

  

ApplicationData - 用作当前漫游用户的特定于应用程序的数据的公共存储库的目录。   漫游用户在网络上的多台计算机上工作。漫游用户的配置文件保存在网络上的服务器上,并在用户登录时加载到系统上。

     

LocalApplicationData用作当前非漫游用户使用的特定于应用程序的数据的公共存储库的目录。

简而言之,对漫游配置文件使用ApplicationData,对非漫游配置文件使用LocalApplicationData