![这是 Windows 注册表的准确摘要吗?](https://linux22.com/image/1506292/%E8%BF%99%E6%98%AF%20Windows%20%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%E5%87%86%E7%A1%AE%E6%91%98%E8%A6%81%E5%90%97%EF%BC%9F.png)
我正在阅读 Mark Lutz 的《学习 Python,第 5 版》一书,作者对 Windows 注册表的评论让我感到疑惑。
以下是有问题的句子(来自第 3 章第 2 节):
因为较新的 Windows 系统使用 Windows 注册表(又称文件名关联)来查找要运行文件的程序,所以你不需要在命令行上明确命名“python”或“py”来运行.py文件。
我对此有两个疑问:
- 这是一个完全的Windows 注册表的描述?
(我 99% 确定不是,因为描述 Windows 注册表不是作者的主要意图。)
- 它是一个准确的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文件。