(转载)RegSetValueEx设置REG_SZ类型键值时要注意的问题

REG_SZ  REG_SZ
  在注册表中,REG_SZ,是一种字符串类型,代表一个简单的文本字符串,是最常见的一种数据类型。
  其中“SZ”是“String Zero”的缩写,匈牙利命名法,表示null结尾的字符串变量。

  注:REG_SZ型注册表值项没有长度限制。

原文出处: http://blog.csdn.net/jun_01/archive/2005/07/05/414959.aspx

假设szValue是一个TCHAR[] .

用以下语句,看起来很正常,但实际却有问题.   数据读取出来后后边有很多乱码.

RegSetValueEx(hKey, _T("Open"), 0, REG_SZ, (BYTE *)szValue, _tcslen(szValue) * sizeof(TCHAR) );

原来是注册表中存字符串数据也得带着那个0;
所以正确做法应该这样:
RegSetValueEx(hKey, _T("Open"), 0, REG_SZ, (BYTE *)szValue, (_tcslen(szValue) + 1) * sizeof(TCHAR));

这时候再看REG_SZ中的"SZ",似乎觉得这个名字起的很好.

原文地址:https://www.cnblogs.com/kmshhl/p/4116376.html