什么是Windows注册表项名称的最大长度?

问题描述:

我正在写一个非常长的注册表键名(这是一个组合卸载程序列表),我认为它太大了。什么是Windows注册表项名称的最大长度?

键的最大尺寸是多少(以字符为单位)? (Win xp,vista,7之中最小的最大值,因为它需要在它们全部上工作)

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

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

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

+4

实际上,根据你发送的链接是密钥名称:255,数值名称:16383,实际值:1兆字节。 – Allanrbo 2013-09-10 15:35:57

这里的一个超过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查看这个键时,我注意到它显示了一个箭头,指示有子键但点击时不会响应。我只是猜测最后的'#'键,因为该区域的其他键以它结束。

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

+1

这是一个API错误。该文档说密钥长度限制是255,但RegCreateKeyEx接受256,并且空终止符不计数。那么,257.哎呀。 – Zatronium 2016-08-20 22:08:52