gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:10:32 27 4
gpt4 key购买 nike

Reading the Windows registry key "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" using RegGetValue() returns error code 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,表示文件无效。

值得一提的是,本地主机运行的是 Windows 10 Pro x64。

这种困惑的根源是什么?

enter image description here

修改后的代码:

使用 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);

最佳答案

问题

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

By default, a 32-bit application running on WOW64 accesses the 32-bit registry view and a 64-bit application accesses the 64-bit registry view. The following flags enable 32-bit applications to access redirected keys in the 64-bit registry view and 64-bit applications to access redirected keys in the 32-bit registry view. These flags have no effect on shared registry keys.

解决方案

您可以在 x64 模式下重建您的应用程序,或者您可以指定您需要的注册 TableView 。

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);

更多信息:Accessing an Alternate Registry View

关于c++ - 使用 RegGetValue() 读取 Windows 注册表项 "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"返回错误代码 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889507/

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