Now that I've been through the pain of fixing our code to work with the UAC requirements is actually a really good thing. When we run for the first time and require registration stuff I launch a separate elevated process and write to hklm. I believe this is the correct thing to do as we are requiring a change to be made that will affect all users of the software so UAC should be invoked.
Bob Berge wrote:
We have a similar issue with some global settings which apply to all users, also stored in HKEY_LOCAL_MACHINE\Software\\. I can add a manifest to the program so that it has the privileges it needs to avoid virtualization, but then the user faces the wrath of UAC every time they run our program.
Here i believe that you should launch an elevated process when the user wants to change settings but not for the whole application. Settings that affect all users of the system should only be modified by administrative users running in elevated mode. Russ