蛋疼的 REG_MULTI_SZ

话说这个东西是够蛋疼的,当时在发《Delphi Read/Write REG_MULTI_SZ》一篇的时候就注意到读到的信息虽然是正确的,但是在写入的时候却发生了错误。如果再读的话那就更不对了。 从网上查了一下那个蛋疼的REG_MULTI_SZ到底是个什么东西,但是大部分人的结论就是这么一句:

REG_MULTI_SZ    一个以空字符结束的字符串数组,被两个null字符结束。

看了半天也没发现到底信息后面写的是什么东西,看来是我太笨了! sad 今天又遇到这个问题索性把注册表中的一个REG_MULTI_SZ   键值倒了出来,原来竟然是这么一串东东:

1
2
3
4
5
6
7
8
9
10
11
12
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System]
"Component Information"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"Identifier"="AT/AT COMPATIBLE"
"Configuration Data"=hex(9):ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,02,00,00,00,05,\
00,00,00,0c,00,00,00,00,00,00,00,00,00,00,00,80,00,ff,03,00,00,3f,00,fe,00,\
01,00,05,00,00,00,18,00,00,00,00,00,00,00,00,00,00,00,00,00,0c,00,00,de,00,\
00,00,00,0e,00,00,00,01,00,00,00,0f,00,00,00,01,00
"SystemBiosDate"="12/17/10"
"SystemBiosVersion"=hex(7):31,00,32,00,31,00,37,00,31,00,30,00,20,00,2d,00,20,\
00,32,00,30,00,31,00,30,00,31,00,32,00,31,00,37,00,00,00,00,00

结束的地方是00,00,00,00,00~ laugh ,知道了是怎么结束的也就知道该怎么写回去了。擦,太蛋疼了~

原创文章,转载请注明: 转载自 obaby@mars

本文标题: 《蛋疼的 REG_MULTI_SZ》

本文链接地址: http://www.h4ck.org.cn/2011/05/reg_multi_sz/

You may also like

4条评论

  1. @obaby
    “结束的地方是00,00,00,00,00”,这么解释是不科学的。因为Windows平台上Unicode编码的一个字符是2字节的,所以2个NULL字符就是“00,00,00,00”——共4个字节。而你说的最前面还有1个字节的“00”是属于字符串尾字符的。若尾字符是中文的,那么结束的地方应该是“xx,00,00,00,00”——“xx”表示不确定。

发表评论

电子邮件地址不会被公开。 必填项已用*标注