Windows 注册表中的神秘@字符

Windows 注册表中的神秘@字符

当我在 Windows 注册表中导航到“HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WMP.PlayCD\Shell\Play”时,我在 Windows 7 系统上找到了一个名为 MUIVerb 的 REG_EXPAND_SE。然而,它的内容中却包含“@%windir%\system32\wmploc.dll,-6503”

现在我的问题是:这个 @ 字符是什么意思或起什么作用?我是在 MS-DOS 中长大的,以前从未见过这样的符号。我应该将它解释为电子邮件地址中的 @ 吗?最终结果是什么。它最终会变成“C:\%windir%\system32\wmploc.dll,-6503”吗?

答案1

注册表本身只是一个分层的数据存储;符号和含义取决于使用数据的程序。

在这种情况下,MUIVerb值是 Explorer 保存文件操作文本描述的位置。有一段时间,它们直接保存在注册表中,但当引入各种 Windows“语言包”时,可翻译文本被移至文件资源,以“ @”开头的描述被 Explorer 解释为“文本存储在以下位置(EXE/DLL 文件的编号为‘STRING’的资源)”。 (同一资源可能存在针对不同语言的多个版本。 您可以使用资源浏览器或类似工具来浏览 DLL 和 EXE 文件。)

上述“注册表作为数据存储”规则有一个例外。请注意,数据类型是REG_EXPAND_SZ,而不是REG_SZ。这意味着当 Explorer 读取值时,它将在其中扩展某些环境变量 - Explorer 将收到“ @C:\WINDOWS\system32\wmploc.dll,-6503”(扩展%windir%)。这是注册表值和数据可以拥有的唯一“特殊”的东西。

剩下的就完全取决于Explorer了——开头的“ @”意味着Explorer需要加载一个库C:\WINDOWS\system32\wmploc.dll,在其中找到一个字符串资源-6503,并使用其内容作为最终的文本显示给用户。

相关内容