函数RegOpenKeyEx的诡异行为,哪位高手能帮忙解释一下
函数RegOpenKeyEx的诡异行为,谁能帮忙解释一下?工作中碰到一个诡异的问题,该问题可以最终归结为函数RegOpe
函数RegOpenKeyEx的诡异行为,谁能帮忙解释一下?
工作中碰到一个诡异的问题,该问题可以最终归结为函数RegOpenKeyEx的诡异行为,希望有大牛帮忙解释一下!
请看下面的测试程序:
C/C++ code#include <stdio.h>#include <stdlib.h>#include <windows.h>int main(int argc, char* argv[]){ HKEY hk; LONG lreturn = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\Mercury Interactive\\LoadRunner\\Vugen\\Logger\\media"), 0, KEY_READ, &hk ); if(lreturn==ERROR_SUCCESS) { printf("YES!\n"); }else { printf("NO!\n"); } char a ; scanf("%c ", &a); return 0; }
这个程序在我本地机器运行结果为输出"YES", 在远程另一台机器上运行则输出"NO"。
而这两台机器在HKEY_LOCAL_MACHINE下都没有"Software\\Mercury Interactive\\LoadRunner\\Vugen\\Logger\\media"项,但是在HKEY_CURRENT_USER下刚好都有"Software\\Mercury Interactive\\LoadRunner\\Vugen\\Logger\\media"项。
本机机器64位,远程机器32位,均为Win7系统,测试程序编译为32位。
我觉得很奇怪在本地为什么居然能返回"YES",明明在HKLM下没有那一项啊。莫非函数RegOpenKeyEx会在HKLM中找不到时就到HKCU中去找?如果真是这样为什么在远程机器上又输出"NO"呢?
莫非与什么设置有关?
[解决办法]64有重定位,去
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercury Interactive\\LoadRunner\\Vugen\\Logger\\media看看