We have an MSI installer for a .Net WinForms app for Windows XP that installs and runs only as an admin. Users have to log in to the app when it runs. Customers want it to install and run under a user account under Vista, and to use their Windows account.
A preliminary look through the code shows lots of problems; the installer writes to the registry and installs the app in C:\Program Files. The app stores user preference in the registry, writes data to C:\Documents and Settings\All Users\, and creates temp files in C:.
I guess the first thing to do is store data files in System.Environment.CommonApplicationData and user preferences in System.Environment.LocalApplicationData. Can a user account install an app to System.Environment.ProgramFiles?
A problem is that the app must be installable and uninstallable by any user, and all users share the same data files. Each user has their own preferences.
Is there a book or web site that gives a detailed breakdown on what is required to build a WinForms app that obeys the rules for multiple users on Vista?
Edit: I checked with the client and the requirement to install only as a user account is firm, they are removing admin access from floor staff. This rules out admin-installed components and per-machine installs.
I was thinking of creating a separate data app that would run on an admin machine which the floor machines would connect to via remoting. All client data would be stored on this machine. However, this app would also have to install and run under a user account.
Is there a book or site describing all the rules which Vista user apps must follow?