Windows注册表项名称的最大长度是多少?

Cla*_*ols 11 registry windows-xp windows-vista

我正在写一个很长的注册表项名称(它是一个组合卸载的程序列表),我认为它太大了.

密钥的最大大小是多少(以字符为单位)?(Win xp,vista,7中最小的最大值,因为它需要对所有这些都有效)

Ben*_*Ben 16

键名: 255个字符
值名称: 16,383个字符
值:可用内存(最新格式)或1 MB(标准格式)

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724872%28v=vs.85%29.aspx

  • 实际上,根据您发送的链接,它是密钥名称:255,值名称:16383,实际值:1兆字节. (4认同)

Bra*_*don 6

根据这篇支持文章,它是255个字符.


Alg*_*aut 5

这是一个超过255的密钥:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 \控制\ DeviceClasses {53f5630d-b6bf-11d0-94f2-00a0c91efb8b} ##?#STORAGE#VOLUME #_ ?? _ USBSTOR#DISK&VEN_LEXAR&PROD_USB_FLASH_DRIVE&#REV_1100&AANL1B891R5GCDV6 0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}#{ 53f5630d-b6bf-11d0-94f2-00a0c91efb8b}#

当我编写一个工具来搜索注册表中的所有密钥时,我发现了这一点.我创建了一个256的缓冲区,导致堆栈损坏异常.

当我尝试使用regedit查看此密钥时,我注意到它显示一个箭头,指示有子键但是在单击时不会响应.我只猜测最后的'#'键,因为该区域中的其他键以它结尾.

当我将缓冲区加倍时,一切都进展顺利.

  • 这是一个API错误。文档说密钥长度限制为255,但是RegCreateKeyEx接受256,并且空终止符不计算在内。因此,257。糟糕。 (2认同)