我已经编写了代码来读取和写入注册表,除了win2003之外,所有操作系统都能正常工作。基本上在注册表中设置值(RegSetValueExW)后,我能够正确读取它(RegQueryValueExW)。但是当我打开注册表时,我会看到一些垃圾字符。
使用
打开RegOpenKeyExW(HKEY_LOCAL_MACHINE, subKey , 0, KEY_WRITE | KEY_WOW64_64KEY, &_regKey);
设置:(值为wstring)
::RegSetValueExW(_regKey, key, NULL, REG_MULTI_SZ, reinterpret_cast<const BYTE*>(value.c_str()), static_cast<DWORD>(value.length()*2 + 1));
查询:
::RegQueryValueExW(regKey, key, NULL, &type, reinterpret_cast<LPBYTE>(&value[0]), &valueLength);
答案 0 :(得分:2)
答案 1 :(得分:0)
您应该使用(value.length() + 1)*2
代替value.length()*2 + 1
。