首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"SOFTWARE\Microsoft\Windows\CurrentVersion\Run“()读取RegGetValue注册表项返回错误代码2

使用"SOFTWARE\Microsoft\Windows\CurrentVersion\Run“()读取RegGetValue注册表项返回错误代码2
EN

Stack Overflow用户
提问于 2016-03-09 10:52:37
回答 1查看 2.2K关注 0票数 0

使用"SOFTWARE\Microsoft\Windows\CurrentVersion\Run“读取RegGetValue()注册表项将返回错误代码2。

我已经坐了几个小时来调试这个问题,但是还没有找到解决方案。

下面是用于检索名为“test”的注册表值的代码:

代码语言:javascript
复制
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。

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-09 11:25:19

问题

您很可能正在尝试从32位应用程序访问64位注册表视图。

默认情况下,运行在WOW64上的32位应用程序访问32位注册表视图,64位应用程序访问64位注册表视图。以下标志使32位应用程序能够访问64位注册表视图中的重定向键,并使64位应用程序能够访问32位注册表视图中的重定向键。这些标志对共享注册表项没有影响。

溶液

可以在x64模式下重新构建应用程序,也可以指定所需注册表的哪个视图。

代码语言:javascript
复制
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);

欲了解更多信息:访问备用注册表视图

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35889507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档