这是 Windows 注册表的准确摘要吗?

这是 Windows 注册表的准确摘要吗?

我正在阅读 Mark Lutz 的《学习 Python,第 5 版》一书,作者对 Windows 注册表的评论让我感到疑惑。

以下是有问题的句子(来自第 3 章第 2 节):

因为较新的 Windows 系统使用 Windows 注册表(又称文件名关联)来查找要运行文件的程序,所以你不需要在命令行上明确命名“python”或“py”来运行.py文件。

我对此有两个疑问:

  1. 这是一个完全的Windows 注册表的描述?

(我 99% 确定不是,因为描述 Windows 注册表不是作者的主要意图。)

  1. 它是一个准确的Windows 注册表的描述?

换一种方式,所有 Windows 文件名关联实际上都存储在 Windows 注册表中,或者是否有多个其他位置可以存储此类关联?


(如果不准确,这句话应该怎样表述完全准确,而不会扩大超出作者意图的范围?

答案1

就目前而言,这种描述是准确的,但它并不完整。文件关联存储在注册表中,但注册表存储了更多信息。

事实上,“注册表”这个名称源自 Windows 3.x 时代,当时它用于注册文件关联。后来的版本(95 及以后)使用注册表来存储更多数据,但注册表的最初目的是注册文件关联。

答案2

让我修改一下这句话:

由于较新的 Windows 系统使用设置来跟踪文件,这些设置存储在Windows 注册表(这些设置您可以使用文件名关联(又名文件名关联)来查找用于运行文件的程序,而无需在命令行上明确命名“python”或“py”来运行 .py 文件。

我觉得这样更准确。Windows 系统确实为此目的使用了 Windows 注册表。(Windows 系统使用的不仅仅是 Windows 注册表。例如,从命令提示符运行ECHO %PATHEXT%。这不会改变 Windows 注册表是系统可能使用的进程的一部分这一事实。)

根据文件名的一部分检查如何处理文件的行为就是人们使用短语“文件名关联”时所指的行为。(具体来说,常见的方法是检查文件名中称为“扩展名”的部分。)

我无意质疑(或确认)0xDEADBEEF 的答案。我觉得“又名文件名关联”有点不清楚或可能不正确,但其余的说法似乎准确。不准确的是认为 Windows 注册表仅与文件扩展名有关。自 Windows 95 以来,这远非事实。

答案3

其他答案已经涵盖了 Windows 注册表的实际用途,以及(非常有帮助!)它的词源。我想尝试重新措辞原句。

原文如下:

因为较新的 Windows 系统使用 Windows 注册表(又称文件名关联)来查找要运行文件的程序,所以你不需要在命令行上明确命名“python”或“py”来运行.py文件。

以下是我认为更准确的表述:

因为较新的 Windows 系统使用文件扩展名(在 Windows 注册表中注册)来查找要运行文件的程序,所以您不需要在命令行上明确命名“python”或“py”来运行.py文件。

相关内容