185

I have a workstation running Windows Server 2008 that's logged into an AD domain, and I have a dual boot with Ubuntu Linux. When running Linux, I'd like to be able to use the same Thunderbird profile I use under Windows, so I pointed Thunderbird to use a profile I found under:

\Users\(myname)\AppData\Local\Thunderbird\Profiles

It turns out it was not the correct profile -- it had the right configuration, but the Inbox was an old version. I eventually found out the correct path was:

\Users\(myname)\AppData\Roaming\Thunderbird\Profiles

What's the rationale behind those different places to store application data?

JCCyC
  • 2,615
  • 4
  • 22
  • 25

3 Answers3

219

Roaming is the folder that would be synchronized with a server if you logged into a domain with a roaming profile (enabling you to log into any computer in a domain and access your favorites, documents, etc. Firefox stores its information here, so you could even have the same bookmarks between computers with a roaming profile.

Local is the folder that is specific to that computer - any information here would not be synchronized with a server. This folder is equivalent in Windows XP to C:\Documents and Settings\User\Local Settings\Application Data.

LocalLow is the same folder as local, but it has a lower integrity level. For example, Internet Explorer 8 can only write to the LocalLow folder (when protected mode is on).

This document from Microsoft ("Managing Roaming User Data Deployment Guide") has a long explanation for what these three folder areas are and how they are used, as well as the changes implemented between Windows XP and Vista (Windows 7 retains the Vista structure).

mirh
  • 955
  • 1
  • 10
  • 21
Jared Harley
  • 12,552
  • 3
  • 41
  • 51
  • 4
    As for Thunderbird, the TB profile should actually live in Roaming but the cache of downloaded mails, at least for IMAP accounts definitely should be elsewhere. If I were in a domain here, there'd be a lot of copying going on on each logon/-off with 1+ GiB of mails. – Joey Aug 11 '09 at 21:56
  • Yeah, that would be bad - especially if the roaming profile was trying to sync on a slow connection! – Jared Harley Aug 11 '09 at 22:17
  • 2
    I guess the choice of Local* bs Roaming is the app developer's choice? – Howiecamp Dec 28 '09 at 00:08
  • 6
    This [link from Microsoft](http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx) (same as above, but not a doc) has a good explanation of folders, what is used where, and relationship to folders in XP. – mindless.panda Aug 24 '11 at 14:33
  • 1
    @Howiecamp, yes, [this link](http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx) details the SpecialFolders enumeration for .NET 4.0. Developers choose which folder to save data to, in this case either `ApplicationData` or `LocalApplicationData`. – mindless.panda Aug 24 '11 at 14:35
  • @JaredHarley, So shouldn't `LocalLow` actually be placed at `Local/Low` instead? Also, how did you manage to find those resources? Did you wrote them? – Pacerier Jun 24 '15 at 23:38
  • 21
    What is `lower integrity level` w.r.t any application or internet explorer for that matter? – RBT Feb 23 '17 at 01:50
  • 1
    Are there any noteworthy differences when it comes to Windows versions above 7 (i.e. 8, 8.1 and 10)? – Palec Jun 09 '17 at 16:59
  • 1
    @Jared, Why does Google use `local` instead of `roaming` then? – Pacerier Jul 29 '17 at 11:10
  • 3
    @Pacerier I guess Google wants to manage roaming (synchronization) themselves. – Franklin Yu Apr 17 '18 at 15:29
  • 1
    The "Managing Roaming User Data Deployment Guide" is long, but only mentions LocalLow twice and does not answer @RBT's question. – Josiah Yoder Jul 13 '18 at 14:40
  • 1
    This helps, but I'm having trouble finding the part of the document you link to that elaborates on integrity levels. What exactly does "lower integrity level" mean? Are we talking about data integrity and some policy windows has that regulates what applications can access local vs. locallow? Asking because, as a student software developer, I might need to know this some day... – Twisted Code Aug 26 '20 at 18:37
  • 2
    @TwistedCode Integrity level is something an application can set for itself in order to make sure that it or things it creates runs with lower permissions/trust, which means that for example downloads are marked and certain paths like locallow as well. and when you either run a low-integ file or move a file from a low to medium (default) integ place you get asked whether you want this by Windows. Browsers do this a lot so they can get some sandboxing and use a med integrity bridge-process for things like writing downloads to DL etc. https://en.wikipedia.org/wiki/Mandatory_Integrity_Control – My1 Jun 20 '21 at 14:41
  • 2
    Continuing from my previous comment @RBT may also be interested on this as you asked about the integrity levels. german wiki says on its page that there's also an extra "untrusted" integrity level which cannot write anywhere at all and basically only can exist in RAM https://de.wikipedia.org/wiki/Benutzerkontensteuerung#Integrit%C3%A4tsebenen – My1 Jun 20 '21 at 14:45
71

Roaming: This folder (%appdata%) contains data that can move with your user profile from PC to PC—like when you’re on a domain—because this data can be synced with a server. For example, if you sign in to a different PC on a domain, your web browser favorites or bookmarks will be available.

Local: This folder (%localappdata%) contains data that can't move with your user profile. This data is typically specific to a PC or too large to sync with a server. For example, web browsers usually store their temporary files here.

LocalLow: This folder (%appdata%/../LocalLow) contains data that can't move, but also has a lower level of access. For example, if you're running a web browser in a protected or safe mode, the app will only be able access data from the LocalLow folder.

The apps themselves choose whether to save to the Local, LocalLow, or Roaming folders. Most desktop apps use the Roaming folder by default, while most Windows Store apps use the Local folder by default.

wjandrea
  • 595
  • 8
  • 19
hellowahab
  • 829
  • 6
  • 7
18

As explained in this blog post, The LocalLow folder (and several other Low folders) are created as an extra level of security for programs that are frequently under attack because they are exposed to the web. Internet Explorer and Adobe Acrobat are two prime examples on my system.

Essentially, a program that knows it is vulnerable can start itself in in "low" access mode so that it can only write into those folders and not infect the rest of the hard drive.

Josiah Yoder
  • 988
  • 1
  • 8
  • 16