我在阅读有关 MS-DOS 架构的文章时,遇到了类似的文件自动执行程序和配置系统。
自动执行程序批处理 ( .bat
) 文件,其中包含用于初始化路径、环境变量、CWD、Prompt 等的命令。此文件(连同配置系统) 在操作系统启动过程中自动执行(如果存在)。
自从,操作系统和命令提示符大部分都是相同(或相似)的,我认为相同的过程也将在 Windows 操作系统的当前版本中延续。
这似乎是可以理解的,因为当我们开始时,cmd
我们每次已经处于特定的 CWD,并且有一组指定的位置path
等等。
但事实证明,Windows XP而更高版本的 Windows 操作系统则没有这个功能。
所以我在想现在一切是如何初始化的,为什么自动执行程序被除掉了?
答案1
Windows NT 是一个完全不同的操作系统,它不依赖于 DOS,因此它的所有后代(包括 Windows 2000,不仅仅是 XP 及更高版本)也不使用 DOS 的东西,例如 AUTOEXEC.BAT。也就是说,%SystemRoot%\system32
当启动 DOS 应用程序时,有一个 AUTOEXEC.NT 用于设置环境
Windows ME,尽管属于 Windows 9x 系列,也试图摆脱 DOS。因此它只解析 AUTOEXEC.BAT 中的环境变量
答案2
CONFIG.SYS
DEVICE=
使用和行设置各种选项并加载驱动程序DEVICEHIGH=
。它是在 DOS 启动时读取的。
当 DOS 完成初始化后,它将启动一个 shell。这由SHELL=
CONFIG.SYS 中的行指定,通常是COMMAND.COM
但不是必须的。
COMMAND.COM
AUTOEXEC.BAT
将在使用开关启动时运行/P
--这通常在行中指定CONFIG.SYS
COMSPEC=
(例子) 表示“使永久生效”(它不是“子 shell”)。 switch/D
可以抑制此操作。
DOS 与其他 Microsoft 操作系统之间的差异可以追溯到 XP 之前。它可以追溯到 1993 年,当时 Windows 首次开发 Windows 的 NT 分支;两年后 Windows 95 问世。9x 分支和 NT 分支都与 MS-DOS 的底层不同 - 就 NT 而言,差异非常大。
粗略地概括一下 NT Windows 与 MS-DOS 的区别:
- 使用 CPU 的保护模式在内核和用户空间之间创建屏障。
- 除了 DOS 原始而有限的 TSR 系统之外,还期望多个程序能够运行并访问相同的磁盘、显示器等。
- 具有支持基于事件的编程的消息系统,这是支持 GUI 鼠标和窗口界面的输入方法所必需的。
- 具有需要用来创建窗口、小部件和修改显示所需的 API(GDI 等)。
- 期望程序进行系统调用来与所有设备通信,并且不允许直接访问硬件。
- 一开始,NT 并没有提供很多可从 COMMAND.COM 或同等程序获得的命令行工具来完成操作系统中的任务。
因此,启动过程是不同的,而且对于 Windows 的 NT 分支(包括 XP)来说,差异极大。
维基百科上有关于Windows NT 初始化的详细信息。
9x Windows 更像是 MS-DOS 的多任务扩展,具有奇怪的机制来将事物扩展到 32 位。9x 的启动过程与 MS-DOS 更相似,这是一个很好的描述在微软将 XP 作为基于 NT 的 Windows 消费者和商业版本之前,Windows ME 是 Windows 9x 分支的最后一款产品。
答案3
启动由服务和启动文件夹处理,以启动应用程序(参见任务管理器启动选项卡)。如今没有与 DOS 启动方式相对应的启动方式。自 NT4 以来,服务甚至无需登录即可启动。非常不同。