Hi Rick,
The answer to this really comes down to 2 things - what is application
data and what is user data. Application data would be the runtime code
that basically the user needs read (or read / execute) rights on whereas
user data is data the application uses that is changed, lets say by the
user.
Generally speaking, application data should exist in a shared location on
a machine, so \Program Files\Vendor\Product on generic 32BIT machines,
\Program Files\Vendor\Product on 64BIT machines if your application is a
64BIT application and \Program Files (x86)\Vendor\Product on 64BIT
machines if your application is 32BIT.
In terms of user data (so your database in this case), if each user has
their own, then somewhere like
\Users\Username\AppData\Local\Vendor\Product if the data is only ever
going to be used by that application or \Users\Username\Documents if you
want the user to be able to open it with other things. If the data is
shared between different users on the machine, then \Users\Public is a
good location or \ProgramData\Vendor\Product to be consistent.
I would also look to use environment variables to obtain the relevent
paths, to ensure the same location regardless of drive configuration
etc...
For Program Files use %ProgramFiles% (so
%ProgramFiles%\Vendor\Application)
For Program Data use %ProgramData% (so %ProgramData%\Vendor\Application)
For the user's location use %USERPROFILE% (so %USERPROFILE%\Documents or
%USERPROFILE%\AppData\Local\Vendor\Product)
Be carefull with the registry too - ensure you save application generic
settings to HKEY_LOCAL_MACHINE whereas user-configurable settings to
HKEY_CURRENT_USER.
These are my views anyway - hopefully they will at least put you on the
right path.
Best Regards,
Jon
www.insidetheregistry.com