gpt4 book ai didi

c++ - RegSetValueEx 和 CHAR

转载 作者:行者123 更新时间:2023-11-28 03:41:28 34 4
gpt4 key购买 nike

考虑下面的代码

addHash("hash");

bool addHash(char* hash) {
HKEY hKey = 0;
int code = RegOpenKey(HKEY_CURRENT_USER, subkey, &hKey);

const int length = strlen(hash)+1;
WCHAR whash[100];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, hash, strlen(hash), whash, 100);
LONG setRes = RegSetValueEx(hKey, L"hash", 0, REG_SZ, (LPBYTE)whash, strlen(hash)+1);

return true;
}

代码被编译和执行后,“ha”被放入注册表。谁能告诉我问题出在哪里?

提前致谢!

最佳答案

最后一个参数是倒数第二个参数指向的字节数,而不是字符数。

因此whash的前五个字节(strlen(hash) + 1)将被存储在注册表中。更改为:

LONG setRes = RegSetValueEx(hKey,
L"hash",
0,
REG_SZ,
(LPBYTE)whash,
(wcslen(whash) + 1) * sizeof(WCHAR));

您可能还需要初始化 whash(我认为 MultiByteToWideChar() 不会为您添加空终止符):

WCHAR whash[100] = { 0 };

关于c++ - RegSetValueEx 和 CHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067598/

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