Post by Glen ParksYeah, there's no need to separate them when you can keep both together in a
tidy little bundle, in my opinion. I've always bundled them together in this
way.
In the general case, bundling applications and data together is a recipe
for disaster. This single practice is what brought us UAC and the
various problems UAC attempts to solve, as well as what makes it so
difficult to run a Windows computer without full administrative rights.
There's a number of reasons, the top few that come to mind would be:
Installers often make bad assumptions about what can be removed during
an uninstall or upgrade (Agent's installer isn't bad in this regard, but
many applications assume that their program directory can be destroyed
completely during an uninstall or upgrade)
Since your user account needs rights to modify your data, this means
anything that gets access to your account also gets rights to modify
executables (unless you're very careful with NTFS permissions), so a
virus or trojan can hide easily while still having reasonable odds of
getting executed.
Since Program Files is shared between users, a compromised executable
may get executed by other users, so user accounts are no longer
effective barriers between virus infections.
Backup software doesn't know what to backup and what not to backup.
There is little use in backing up the program side of things since it
can be re-built from an installer, and because so many programs need to
be installed with an installer. Data obviously needs to be backed up.
This isn't to say that it's something you should never do, but in the
general case it tends to be unsafe as a default behaviour since OS and
application authors don't know whether users have taken appropriate
precautions or not. Segregating programs and data by default solves the
problems described above (and more) without adding any significant
downside beyond a bit of complexity for users, and even then, only for
more technical users.
Post by Glen ParksI mean, what's all this 'Local, LocalLow and Roaming' stuff all about?
Local is used for computer-specific data, data that can be easily
re-generated from non-local sources, and data that just shouldn't be
backed up. It only stored locally on your computer in a networked
environment with roaming profiles, and so must be recreated by software
when a user signs on to a new PC. An example would be a browser cache,
temp directories and similar.
LocalLow is similar to local, but designed for use by low-integrity
applications to have a place to store their temporary files. Typically
this is used by Internet Explorer when running add-ons and whatnot in
Protected Mode, although other applications can implement similar.
Processes using this directory typically won't have access to anything
stored elsewhere and data stored here should not be trusted.
Roaming is the primary location for application data storage. It's
named "roaming" because it roams with the user in a networked
environment using roaming profiles. This tends to include
non-machine-specific configuration (user preferences) and data files
that aren't documents/pictures/etc (Agent's folders, browser bookmarks,
mail client data, etc) and other stuff you'd want immediately available
when you login to a new PC.
Programs will often have data in both Local and Roaming based on whether
the data is useful enough to be backed up or whether it can be recreated
by the application easily.
Roaming and Documents are similar in terms of importance to the user,
but by convention if a file can be opened, stored and used directly by
the user it should be in Documents (or Music/Video/etc as applicable),
if it's part of a larger set of files, maintains a structure or is used
by the application directly (such as Agent's data files) then Roaming is
the correct place to me.