这些是 Windows 注册表中的疯狂值吗?

这些是 Windows 注册表中的疯狂值吗?

当尝试修复软件包中出现的奇怪错误消息时,我在注册表中四处查看,发现有些值看起来很“疯狂”。

例如:

HKEY_CLASSES_ROOT\Installer\Components\71CE92CC2CB71D119A12000A9CE1A22A

包含:

signer.dll  REG_MULTI_SZ  
OC~jzh?Vl@K]-%4u9Xx!Intel_VBA_English>ZqT]jI{jf(=1&L[-81-]

相当多其他条目都有这种乱码。对我来说,这看起来更像是出了问题,而不是真正的数据值。这是否可能是注册表损坏的迹象?

答案1

这一切看起来都很合理。毕竟注册表是设计用来保存机器可读数据的。

答案2

这没什么好担心的。事实上,您看到的“正常”值是二进制或十六进制值,转换为我们可以轻松读取的内容。

答案3

关键是存储二进制或十六进制数据,这些数据不一定直接转换成可读字符;因此,当您尝试将其作为文本查看时,程序将尽力使用机器的默认字符集将其转换为字符串(1 个字符通常为 1 个字节),这将导致乱码,因为数据不是以字符形式输入的。

二进制和字节数据可以表示任意数量的东西,这取决于你如何解释它;例如,如果你取一个随机的 32 位整数,假设1,342,749作为二进制这将是00000000 00010100 01111101 00011101十六进制表示为0x00147D1D现在如果我们尝试使用 Ascii 字符集将其读取为字符,我们会得到???}?(更准确地说,NUL - DC4 - } - GS);这看起来完全是胡言乱语。

低级数据,尤其是以位和字节级别存储时,无法保证它可以被视为字符,但这绝不会使数据变得乱码——程序直接以位/字节格式保存数据通常是最有效/最安全的/等等;具体例如压缩技术。

相关内容