我想从注册表中找到Excel.exe的路径。所以我使用了以下内容:
我正在使用Windows64bits
RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKey, 0, KEY_READ, &hKey)
带
szKey = "\Classes\CLSID\{ExcelCLSID}\LocalServer",
此寄存器包含“C:\ PROGRA~1 \ MIF5BA~1 \ Office15 \ EXCEL.EXE / automation”
用于获取Excel.exe路径
RegQueryValueEx(hKey, NULL, NULL, NULL, (BYTE*)szPath, &cSize)
因此,在构建我的平台 x64 的解决方案时,我得到路径
C:\\PROGRA~1\\MIF5BA~1\\Office15\\EXCEL.EXE /automation
很好,但在构建 Win32 平台的解决方案时,我得到了 以下路径
"C:\\Program Files\\Microsoft Office\\Office15\\EXCEL.EXE" /automation
奇怪,因为此值存储在以下注册表中
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{ExcelCLSID}\
我在这里错过了一些东西吗?
答案 0 :(得分:1)
Windows注册表或多或少透明地维护在同一环境中运行的32位和64位应用程序的不同信息。您看到的Wow6432Node
表示该密钥的值特定于在64位版本的Windows上运行的32位应用程序。
您可以禁用默认注册表重定向(请参阅RegDisableReflectionKey),但在大多数情况下,这不是您想要执行的操作。
请参阅有关注册表重定向的信息here。