与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的信息。