Windows的启动顺序是啥?

Posted

技术标签:

【中文标题】Windows的启动顺序是啥?【英文标题】:What's the order of Windows startup?Windows的启动顺序是什么? 【发布时间】:2012-12-03 15:05:52 【问题描述】:

我很想知道用户登录期间 Windows 的启动顺序。有人知道吗? 基本上,我的应用程序是由 GPO 调用的登录脚本调用的。在调用第 3 方 EXE 时,它无法启动。

然后,经过反复试验,我发现 HKCU...\RunOnce 键在登录脚本之后执行。同样的结果,正在调用 EXE,但无法启动。

有效:更新了登录脚本,在用户的启动文件夹中创建了一个快捷方式。现在 EXE 按预期启动。

我知道 AutoRuns 可以告诉我所有可以放置启动项的位置,有人知道整体的执行顺序吗?我能够发现 Run 和 RunOnce 键被异步调用。我可以继续测试 AutoRuns 声明的每个启动项,但这可能需要几天时间。

我最感兴趣的是 Windows 2003 Server 登录启动流程,但我怀疑它与当今使用的其他 Windows 风格非常相似。

【问题讨论】:

technet.microsoft.com/en-us/library/bb457123.aspx 查看“登录阶段”部分。 看看 Mark E. Russinovich 和 David A. Solomon 的“Windows Internals”。他们非常详细地解释了这一点。 是的,我有一个最新版本,但我没有找到列出执行顺序的页面(而且我没有浏览章节)。也许我错过了,你还记得那一章吗? 【参考方案1】:

来源:Understanding the Startup Process - Windows 7 Tutorial

Windows 7 的正常启动顺序是:

    开机自检 (POST) 阶段 初始启动阶段 Windows 启动管理器阶段 Windows 引导加载程序阶段 内核加载阶段 登录阶段

内核加载阶段 Windows 引导加载程序负责将 Windows 内核 (Ntoskrnl.exe) 和 HAL 加载到内存中。 内核和 HAL 一起初始化一组软件 称为 Windows 执行程序的功能。 Windows 执行官 处理存储在注册表中的配置信息 HKLM\SYSTEM\CurrentControlSet 并启动服务和驱动程序。这 以下部分提供有关内核加载阶段的更多详细信息。

登录阶段

Windows 子系统启动Winlogon.exe,这是一个系统服务 使您能够登录和注销。 Winlogon.exe 然后 以下:

启动服务子系统 (Services.exe),也称为 SCM。 SCM 初始化注册表项 Start 的服务 在注册表子项中指定为 Autoload HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Servicename。 启动本地安全机构 (LSA) 进程 (Lsass.exe)。 在 Begin Logon 提示符处解析 Ctrl+Alt+Delete 组合键(如果计算机是 AD DS 域)。

登录用户界面 (LogonUI) 功能和凭据提供程序 (可以是标准凭证提供者或第三方 凭据提供程序)收集用户名和密码(或其他 凭据)并将此信息安全地传递给 LSA 验证。如果用户提供了有效凭据,则访问权限为 通过使用默认的 Kerberos V 5 身份验证授予 协议或 Windows NT LAN 管理器 (NTLM)。

Winlogon 初始化安全和身份验证功能,而 PnP 初始化自动加载服务和驱动程序。用户登录后, 由注册表项LastKnownGood 引用的控制集 (位于HKLM\SYSTEM\Select)更新为中的内容 CurrentControlSet 子键。默认情况下,Winlogon 然后启动 Userinit.exe 和 Windows 资源管理器外壳。然后 Userinit 可以启动 其他进程,包括:

组策略设置生效 适用于用户和计算机的组策略设置生效。

启动程序运行当未被组策略设置覆盖时,Windows 会启动登录脚本、启动程序和服务 在以下注册表子项和文件系统文件夹中引用:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
SystemDrive\Documents and Settings\All Users\Start Menu\Programs\Startup
SystemDrive\Documents and Settings\username\Start Menu\Programs\Startup

一些应用程序可能被配置为在您安装后默认启动 安装 Windows,包括 Windows Defender。计算机制造商或 IT 部门可能会配置其他启动应用程序。

在用户成功登录之前,Windows 启动不会完成 电脑。如果在登录阶段启动失败,您有一个 配置为启动的服务或应用程序出现问题 自动。

如果您想了解更多信息,请查看源链接。

【讨论】:

花了我一段时间才完成这个,就像我拥有的​​ Windows Internals 书一样有趣。不幸的是,我找不到像“步骤 n:执行用户的启动文件夹文件”这样的步骤。和以前一样,我确实注意到 RunOnce 在用户的 Startup 文件夹之前运行。如果我错过了您的回答,我们深表歉意。 虽然已注明,但这是来自给定来源的 100% 复制/粘贴,除非版权所有者 imo 明确授予,否则不应将其作为答案发布。我宁愿将此作为评论发布,并附上源链接。 来自sourcedaddy.com/legal: (...)You agree not to modify, reproduce, transmit, distribute, discriminate, sell, publish or broadcast any such material or content without the written authorization of SourceDaddy or the appropriate affiliate or licensor. @SteinarLima 是的,我们看到几乎所有被引用为复制意大利面的地方。它就在这里,有两票,它回答了问题,也是唯一的答案。我只是对其进行了格式化以使其看起来更好(您应该看到原始答案有多糟糕)。 (顺便说一句,避免代码块中的非代码内容,即使在 cmets 中也是如此)。 @SteinarLima 你会惊讶地发现 SourceDaddy 自己从 Microsoft TechNet 复制了这个。

以上是关于Windows的启动顺序是啥?的主要内容,如果未能解决你的问题,请参考以下文章

windows 如何设置自动启动服务顺序

重新启动集群以进行时间点还原的正确顺序是啥?

如何修改windows系驱动加载顺序?

控制 Windows 服务的启动顺序

Windows + linux 双系统修改启动顺序

boot priority是啥意思