Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have some code that reads the registry and looks for a value in HKEY_LOCAL_MACHINESoftwareApp but when running on 64-bit versions of Windows the value is under HKEY_LOCAL_MACHINESoftwareWow6432NodeApp.

How should I best approach this? Do I need a 64-bit installer or should I rewrite my code to detect both places?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
523 views
Welcome To Ask or Share your Answers For Others

1 Answer

On an x64 machine, here is an example of how to access the 32-bit view of the registry:

using (var view32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser,
                                            RegistryView.Registry32))
{
  using (var clsid32 = view32.OpenSubKey(@"SoftwareClassesCLSID", false))
  {
    // actually accessing Wow6432Node 
  }
}

... as compared to...

using (var view64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser,
                                            RegistryView.Registry64))
{
  using (var clsid64 = view64.OpenSubKey(@"SoftwareClassesCLSID", true))
  {
    ....
  }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...