Elevated Permissions and the Vista SP1 Registry

We recently ran into an interesting issue with our installer which requires elevated permissions to run on Vista SP1. The installer wrote registry entries to HKCR. This is a virtualized hive and the entries are actually written to HKCU. When we ran the app with elevated permissions, the app could not find the entries in HKCR. This is because elevated processes do not see the per-user entries and can only see COM registrations in HKLM\Classes for security reasons. When we changed the installer to write to HKLM instead of HKCR, everything worked fine. However, this means that we cannot do a per-user install when the installer runs with elevated permissions. If you're dealing with strange COM issues when running elevated vs. non-elevated, you may want to look into this.

MSDN has more information.