与RegQueryValueEx奇怪的行为whitch返回值的另一个寄存器

我想从registry的Excel.exe的path。 所以我使用了以下内容:

我正在使用Windows64位

RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKey, 0, KEY_READ, &hKey) 

 szKey = "\Classes\CLSID\{ExcelCLSID}\LocalServer", 

该寄存器包含“C:\ PROGRA〜1 \ MIF5BA〜1 \ Office15 \ EXCEL.EXE / automation”

用它来获取Excel.exepath

 RegQueryValueEx(hKey, NULL, NULL, NULL, (BYTE*)szPath, &cSize) 

所以当构build我的解决scheme的平台x64 ,我得到的path

 C:\\PROGRA~1\\MIF5BA~1\\Office15\\EXCEL.EXE /automation 

这是好的 ,但是当我构build我的Win32平台的解决scheme时,我得到以下path

 "C:\\Program Files\\Microsoft Office\\Office15\\EXCEL.EXE" /automation 

这很奇怪,因为这个值存储在下面的registry中

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{ExcelCLSID}\ 

我在这里错过了什么?

Windowsregistry或多或less透明地维护在同一环境中运行的32位和64位应用程序的不同信息。 您看到的Wow6432Node表示该密钥的值特定于在64位版本的Windows上运行的32位应用程序。

您可以禁用默认registryredirect(请参阅RegDisableReflectionKey ),但在大多数情况下,这不是您想要执行的操作。

请参阅此处有关registryredirect的信息。