什么都分享
以及,记录自己的故事

.reg文件写REG_SZ和REG_EXPAND_SZ以及REG_MULTI_SZ

最近搞某个网络监控软件,要批量导入数据参数,无奈软件开发的设定全部被存在注册表中。

这里先说一下注册表中的REG_SZREG_EXPAND_SZREG_MULTI_SZ的区别。官方大致表述为:

REG_SZ:简单字符串,单行。

REG_EXPAND:扩展类型字符串。

REG_MULTI_SZ:换行字符串。

我这个软件里面也有一个键值是有换行的,但是我看注册表中的信息,居然是REG_SZ类型,REG_SZ类型不是单行吗?它是如何做到换行的???

对比了二进制文件,ASCII的abc在HEX中为61,00,62,00,63,每个字符中都有00作为间隔,如果没有,就会变成乱码了,这个要注意。

再来是ASCII中有换行的字符串:

a
b
c

在HEX中表述为:61,00,0d,00,0a,00,62,00,0d,00,0a,00,63,00,00,00

哈,这下知道是如果利用REG_SZ来作换行的处理了!记住,就是0d 0a,0d代表ASCII中的换行,0a则代表new line。中间的多个00对就是补充间隔。

然后,我尝试在.reg文件中写入REG_SZ的类型值:"TestName"=hex(2):61,00,0d,00,0a,00,62,00,0d,00,0a,00,63,00,00,00,写入后居然变成了REG_EXPAND_SZ类型!这不是我想要的,想了一下,应该是hex(2)的问题,hex(7)更不可能了,那代表着REG_MULTI_SZ类型。

爬文MSDN……爬文谷歌……结果:

hex(1):REG_SZ
hex(2):REG_EXPAND_SZ
hex(7):REG_MULTI_SZ

好了,豁然开朗,我终于明白注册表中的类型转换对应了。

赞(0) 打赏
本文遵守创作共享 BY-NC-ND 4.0协议,转载前请先联系作者。绯末博客 » .reg文件写REG_SZ和REG_EXPAND_SZ以及REG_MULTI_SZ
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏