Ok, off the top of my head, I will use e-mule as an example.
E-mule creates a folder under program files to store files as they are
downloaded. The permissions on program files allows admins full control, but
standard users read/execute only.
This behavior works fine on XP when running as an admin or power user.
This is incorrect behavior (it "doesn't get it") because programs files is
for storing program files ONLY - the files necessary for the program to
execute. It is not for storing any other data, especially per-user data such
as the users downloads, and the folders/file within program files are
intended to only be modified durring program installation/maintenance.
The design of the program is broken, as it is violating an abstraction that
is enforced by Windows.
So, under Windows Vista, the creation of the downloads folder succeeds when
the installation programs runs, as the installation program is running with
admin permissions; however, when the client attempts to save the files, they
are virtualized. This allows the program to function, where it would have
errored out with "access denied" if this functionality were not in place.
I have said before (and will say again) Virtualization is nowhere near
perfect and can lead to other problems - for example, in the e-mule example,
users will have a difficult time finding their downloads from outside of the
e-mule client.
In fact, you may say that it would have been better for virtualization not
to have interfered, as the behavior of virtualization in this case is no
better than the "access denied" behavior - and in my opinion, that would be
a correct assessment.
However, in cases like these, BOTH ACTIONS lead to bugs - virtualization AND
the original actions of the program.
There are cases where virtualization will allow a program to work correctly
without incurring this price. For example, if a program stores a temporary
file to c:\, which is security-restricted, and dies with some obscure error
if it is unable to correctly save this temporary file, virtualization would
allow this program to work CORRECTLY with no side effects, whereas without
virtualization the program would have failed.
My point here, is that I agree virtualization often doesn't have GREAT
results; but, the cases where it fails are usually cases where the program
would have failed anyway, and virtualization does allow programs to work
just fine where without virtualization they would not have worked at all
(how about popular .exe unzipper programs that default to extracting
setup/temporary files to c:\ or some other security-restricted directory?)
So, without virtualization, many programs will fail. With virtualization,
some programs will still fail, but some will automagically start working.
I can see why MS decided to go ahead and implement it, although I do agree
that in some cases it causes more problems than without
I doubt virtualization will be around in the next release of Windows, so
hopefully this will be a moot point soon.