将字符串存储到注册表中,长度一定是 strlen(text) + 1

参考:https://docs.microsoft.com/en-us/windows/desktop/sysinfo/registry-value-types

将字符串存储到注册表中,长度参数一定要是 strlen(text) + 1

如果数据具有REG_SZ,REG_MULTI_SZ或REG_EXPAND_SZ类型,则可能未使用正确的终止空字符存储该字符串。因此,从注册表中读取字符串时,必须确保在使用之前正确终止字符串; 否则,它可能会覆盖缓冲区。(请注意,REG_MULTI_SZ字符串应该有两个终止空字符。)

将字符串写入注册表时,必须指定字符串的长度,包括终止空字符(\ 0)。一个常见的错误是使用strlen函数来确定字符串的长度,但要忘记strlen只返回字符串中的字符数,不包括终止null。因此,字符串的长度应按如下方式计算:strlen( string ) + 1

REG_MULTI_SZ字符串以长度为0的字符串结尾。因此,序列中不可能包含零长度字符串。空序列定义如下:\ 0。

猜你喜欢

转载自www.cnblogs.com/personnel/p/10579337.html