Hello,
This should not be caused by NTFS transactions - that is a feature that an
application has to use explicitly, not something that happens automatically.
This sounds like a problem with "virtualization".
Virtualization is a workaround that Vista uses to allow programs that
misbehave to run in Windows. By misbehave, I mean try to write to files or
registry keys that they don't have access to.
Microsoft has set up special folders that applications are allowed to write
to, and everywhere else is hands-off. This has been the way things have been
done for years now, but many programs don't follow these rules because until
now these rules have not been enforced by default.
Here's how Virtualization works:
- Program, we'll call it badapp, opens its data file in c:\program
files\badapp\data.dat
- Program does stuff
- Program attempts to save file
At this point, the program doesn't have permission to write the file
(program files is read-only!). So, Windows decides to be sneaky, and here's
what it does:
- Windows saves a copy of the file to
c:\users\joebob\appdata\local\virtualstore\program data\badapp\program
files\badapp\data.dat, or something like that, and DOES NOT change the
original file.
- Windows tells badapp that everything worked fine - no problems.
- Windows remembers that it has saved a copy of that file to the new
location for badapp
- From now on, whenever badapp OPENS c:\program files\badapp\data.dat,
Windows will instead load the COPY of the file, and work with only the copy.
So, it sounds like this is what is happening with you. When your program is
saving the data file, the data file is located in a folder that the program
does not have access to - so Windows sneakily redirects a copy of the data
file to a different place.
After Windows has redirected a file, your program no longer sees the
ORIGINAL file. So, Windows Vista won't pick up changes to the file that
Windows XP made, and vice versa, because XP is working on the ORIGINAL file,
and Vista is working on its COPY of the file.
So ... what's the solution? Well, the easiest solution is to change
permissions on the folder that your program writes stuff to.
1) Open an "administrator/root" explorer
- Click start
- Type explorer
- right-click windows explorer
- click run-as administrator
2) From the admin explorer, allow access from Vista
- Browse to the folder you need access to
- Right-click it
- Click Properties
- Click security tab
- Click Edit
- Click Add
* If only your account needs acces, type your username
* If every account on vista needs access, type: Users
- Press enter
- Click the checkbox under Allow next to Full control
- Click OK
- Click OK
OK ... now we need to tell windows not to use virtualization for your
program.
- Start up your program
- Open Task Manager
- Click Processes tab
- Find your program
- Right-click it
- If there is a checkmark next to "Virtualization", click it to uncheck it
You may need to reload your data file at this point.
- JB
Vista Support FAQ
http://www.jimmah.com/vista/