cmd.exe 的快捷方式如何存储程序设置?

cmd.exe 的快捷方式如何存储程序设置?

如果右键单击 cmd.exe 的快捷方式,您不仅会看到每个快捷方式的常规属性,还会看到控制台模拟器的属性。

cmd.exe 右键单击​​属性的屏幕截图

我的问题是,这怎么可能呢?我从未见过其他 Windows 程序以这种方式工作。cmd 是否利用了不常用的 API,还是 Windows 只针对此程序进行了特殊处理?

答案1

否;Windows 有特殊处理所有控制台应用程序。与 Linux 程序不同,每个 Windows .exe 都有标题中有一点表明这是一个“控制台”还是“窗口”可执行文件。

此外,控制台窗口不是由 CMD 本身创建的。(在 Linux 术语中,CMD 是一个 shell/解释器;它不是终端。)相反,只要启动这样的进程,CSRSS 就会自动显示它们,尽管如今实际的 UI 已被拆分成康豪斯。确实有一个 CMD 和其他控制台应用程序使用的 API,但它有完整的文档记录并且是 Win32 API 的标准部分。

Windows 资源管理器(显示这些“属性”对话框的程序)可从此标题字段识别控制台应用程序并显示其他设置。(它甚至显示使用 NTVDM 的 16 位应用程序的更多设置。还记得 .pif 文件吗?)

每个新创建的控制台窗口都会拾取设置从 下HKEY_CURRENT_USER\Console,其中有基于可执行文件名称或初始窗口标题的子项(子文件夹)。如果没有匹配的子项,它还将(通过某种未知机制)获取存储在快捷方式的 .lnk 文件中的设置,如您提供的屏幕截图所示。

也可以看看:

相关内容