话说这个东西是够蛋疼的,当时在发《Delphi Read/Write REG_MULTI_SZ》一篇的时候就注意到读到的信息虽然是正确的,但是在写入的时候却发生了错误。如果再读的话那就更不对了。 从网上查了一下那个蛋疼的REG_MULTI_SZ到底是个什么东西,但是大部分人的结论就是这么一句:
REG_MULTI_SZ 一个以空字符结束的字符串数组,被两个null字符结束。
看了半天也没发现到底信息后面写的是什么东西,看来是我太笨了! =( 今天又遇到这个问题索性把注册表中的一个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~ 😀 ,知道了是怎么结束的也就知道该怎么写回去了。擦,太蛋疼了~
原创文章,转载请注明: 转载自 obaby@mars
本文标题: 《蛋疼的 REG_MULTI_SZ》
4条评论
=( 我看了半天,也没看明白是怎么回事………………
就是我比较笨,没看懂两个null是个什么东西。
@obaby
“结束的地方是00,00,00,00,00”,这么解释是不科学的。因为Windows平台上Unicode编码的一个字符是2字节的,所以2个NULL字符就是“00,00,00,00”——共4个字节。而你说的最前面还有1个字节的“00”是属于字符串尾字符的。若尾字符是中文的,那么结束的地方应该是“xx,00,00,00,00”——“xx”表示不确定。
你说的是对的.早先意识到了但是一直没改.惭愧