使用"SOFTWARE\Microsoft\Windows\CurrentVersion\Run“读取
RegGetValue()注册表项将返回错误代码2。
我已经坐了几个小时来调试这个问题,但是还没有找到解决方案。
下面是用于检索名为“test”的注册表值的代码:
long result = RegGetValue(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), TEXT("test"), RRF_RT_ANY, &dwType, (PVOID)&buff, &size);下面是我将注册表值"test“添加到Run键的图片(上面已经提到)。
我得到的错误代码是2,它表示一个无效文件。
应该指出,本地主机正在运行Windows10Pro x64。
造成这种混乱的原因是什么?

修改代码:
在使用KEY_WOW64_64KEY标志后,我仍然会得到错误代码2。
RegCreateKeyEx(
HKEY_LOCAL_MACHINE,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"),
NULL,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS | KEY_WOW64_64KEY,
NULL,
&hKey,
&dwStatus)
long result = RegGetValue(hKey, NULL, TEXT("test"), RRF_RT_ANY, &dwType, (PVOID)&buff, &size);发布于 2016-03-09 11:25:19
问题
您很可能正在尝试从32位应用程序访问64位注册表视图。
默认情况下,运行在WOW64上的32位应用程序访问32位注册表视图,64位应用程序访问64位注册表视图。以下标志使32位应用程序能够访问64位注册表视图中的重定向键,并使64位应用程序能够访问32位注册表视图中的重定向键。这些标志对共享注册表项没有影响。
溶液
可以在x64模式下重新构建应用程序,也可以指定所需注册表的哪个视图。
HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &key);
long result = RegGetValue(key, nullptr, TEXT("test"), RRF_RT_ANY, &dwType, (PVOID)&buff, &size);欲了解更多信息:访问备用注册表视图
https://stackoverflow.com/questions/35889507
复制相似问题