Ответ кажется довольно сложным, и, вероятно, слишком много кода, чтобы поместить его здесь в Stack Overflow.
В итоге вам нужно P / Invoke для доступа к собственным вызовам API Windows для RegOpenKeyEx , и обязательно передать флаг KEY_WOW64_64KEY, чтобы всегда получать доступ к 64-битному реестру. (KEY_WOW64_32KEY - флаг, обеспечивающий постоянный доступ к 32-битному)
Частичное решение было опубликовано на этой записи в блоге .
Для всех, кто может запустить .NET 4.0, вы можете использовать новую поддержку для этого: RegistryKey.OpenBaseKey (RegistryHive.LocalMachine, RegistryView.Registry64);