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

时间:2009-11-24 22:09:32

标签: windows-vista windows-xp registry

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

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

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:6)

根据this support article,它是255个字符。

答案 2 :(得分: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查看此密钥时,我注意到它显示一个箭头,表示有子密钥但在单击时不会响应。我只猜测最后的'#'键,因为该区域中的其他键以它结尾。

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