gpt4 book ai didi

C++简单读取注册表问题

转载 作者:行者123 更新时间:2023-11-28 01:09:01 24 4
gpt4 key购买 nike

平台取胜。

好吧,我正在尝试获取名为 SunJavaUpdateSched 的键的值,但我正在获取一个错误。我遇到第二个错误,不知何故我可以打开 key 但无法获取值。所以这是到目前为止的代码:

void dealWithRegistry()
{
HKEY regkey1;
char data[100];
DWORD datasize = sizeof (data) / sizeof (char);
LONG rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, &regkey1);
if (rc != ERROR_SUCCESS)
{
cout << "there was a problem openning" << endl;
}
else
{
rc = RegGetValue (regkey1, NULL, L"SunJavaUpdateSched", RRF_RT_REG_SZ, NULL, (void*) data, &datasize);
if (rc != ERROR_SUCCESS)
{
cout << "there was a problem getting the value" << endl;
}
}

printf("%s\n", data);

}

最佳答案

打印出实际的错误值。您可以查看系统错误代码,它会准确告诉您问题所在。

请注意 RegGetValue 将返回一个宽字符串,而不是一个字符串,这意味着您使用 char 的变量将给您垃圾。

代码本身的几个问题:

  1. dealWithRegistry ...真的吗? ReadJavaUpdateSchedulerValue 怎么样?
  2. sizeof(char) 始终为 1(根据定义)。
  3. 在 C++ 中,您应该在此处使用 static_cast 而不是 C 样式转换。
  4. 您没有在任何地方调用 RegCloseKey!

关于C++简单读取注册表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4482884/

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