【发布时间】:2018-07-04 02:51:17
【问题描述】:
所以今天,我一直在尝试通过 RegGetValue 从 C++ 中的注册表获取 MachineGuid 值。
RegGetValue 在我尝试在注册表中读取的几乎所有其他值上都可以正常工作,但由于某种原因不适用于 MachineGuid(输出 = 无)。
有人知道如何解决这个问题吗?我如何正确检索它?(最好是字符串) 抱歉,如果这是一个菜鸟问题,我只是不知道此时还能做什么。 谢谢!
#define BUFFER 8192
int main{
char value[255];
DWORD BufferSize = BUFFER;
RegGetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Cryptography", "MachineGuid", RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize);
std::cout << value << std::endl; // Returns absolutely nothing.
system("pause");
}
【问题讨论】:
-
你在向操作系统撒谎你的缓冲区大小。但是我不确定这会伤害到你。
-
检查返回值,记住注册表函数成功返回0。
-
感谢您的建议,但正如我所说,当我尝试读取其他注册表值时,它工作得非常好。它实际上成功地输出了值。由于某种原因不适用于 MachineGuid....
-
这就是你检查返回值的原因,这样你就可以找出函数在这种特殊情况下认为什么(如果有的话)是错误的。如果结果调用成功但仍然没有输出(特别是返回的缓冲区大小),那么事情就很奇怪了。