首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数RegOpenKeyEx的诡异行为,哪位高手能帮忙解释一下

2012-06-07 
函数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看看

热点排行