gpt4 book ai didi

c++ - RegOpenKeyEx 的奇怪行为

转载 作者:可可西里 更新时间:2023-11-01 10:27:26 29 4
gpt4 key购买 nike

在工作中我遇到了我们产品的一个奇怪的行为,发现可以归结为Windows API RegOpenKeyEx 的奇怪行为。下面是我的测试代码:

#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”。

在两台机器上,注册表项“Software\Mercury Interactive\LoadRunner\Vugen\Logger\media”存在于 HKEY_CURRENT_USER 而不是 HKEY_LOCAL_MACHINE 下。

所以我很困惑为什么它在本地机器上输出"is"?更奇怪的是,为什么它在两台机器上的行为不同?本地机器是Win7 64位。远程虚拟机是Win7 32bit。该程序编译为 32 位。

最佳答案

这听起来有点像 Registry Virtualization ,如果本地计算机在 VirtualStore 中有一个条目(开发过程中之前的 Create 调用?)即使 key 在 HKLM 下不存在,open 调用也会成功。

要深入了解这个问题,您可以运行 Process Monitor ...

关于c++ - RegOpenKeyEx 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915529/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com