“SpecialFolder.LocalApplicationData”和“SpecialFolder.ApplicationData”之间的区别?

在我的系统上, %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); 

我的问题是,我的应用程序应将这些位置保存到哪个位置?

有哪些地点可以使用的准则? 如果我select了错误的地点,我是否会面临问题?

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

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

LocalLow文件夹用于低特权任务(如Internet Explorer)。 你不需要担心。

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

根据MSDN ,区别在于LocalApplicationData停留在本地计算机上,并且不会漫游… ApplicationData确实漫游,例如,如果用户从其他计算机登录到域,它将被同步…

LocalLow是指像BHO运行在IE的“保护模式”的特定情况…

对于标准应用程序,始终使用ApplicationData 使用LocalApplicationData的东西,不应该漫游与用户…

从MSDN – Environment.SpecialFolder枚举 :

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

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

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