While testing a backup application (that I wrote in .NET) on a 64-bit Windows 7 VM today, the initial registry reads failed (although, weirdly, the writes succeeded). This app has worked well on Windows XP in the past. After a bit of Googling, I found the solution. The problem was that the default setting for the UAC (User Access Control) feature had been denying the app permission to read the registry settings. The UAC should normally notify the user when a program (or user, depending on the UAC setting) tries to make certain changes to Windows. My application, however, was not triggering a UAC notification, but its registry reads were denied nevertheless. Setting UAC to Never notify fixed it. The default UAC setting on Windows 7 is supposed to notify the user when programs attempt to make changes to Windows. The reason that a notification was not raised was because my application is not certified for Windows 7 and/or does not support UAC.
To change the UAC setting, click the Start button type ‘UAC’ in the Search box. Open the UAC and change to the desired setting.