云计算百科
云计算领域专业知识百科平台

系统信息工具学习笔记(15.12):LoadOrder——驱动和服务的加载顺序一眼看懂

avatar

🔥
个人主页:
杨利杰YJlio

❄️
个人专栏:
《Sysinternals实战教程》
《Windows PowerShell 实战》
《WINDOWS教程》
《IOS教程》

《微信助手》
《锤子助手》
《Python》
《Kali Linux》

《那些年未解决的Windows疑难杂症》
🌟
让复杂的事情更简单,让重复的工作自动化


文章目录

  • 系统信息工具学习笔记(15.12):LoadOrder——驱动和服务的加载顺序一眼看懂
    • 一、LoadOrder 是干嘛的?
    • 二、下载安装与基础用法
      • 2.1 获取方式
      • 2.2 最小可用示例
    • 三、理解“加载顺序”的几个关键点
      • 3.1 启动类型(Start Type)
      • 3.2 启动组(Group)
      • 3.3 组内顺序(Order)
    • 四、典型使用场景
      • 场景 1:排查某驱动导致的蓝屏
      • 场景 2:安全 / 防护软件“谁占坑更早”
      • 场景 3:与 Autoruns / RAMMap / Process Explorer 联动分析
    • 五、常用操作示例
      • 5.1 只关注某个组或关键字
      • 5.2 导出并对比不同时间的启动顺序
    • 六、注意事项与风险提示
    • 七、写在最后:把“黑盒启动过程”变成可读的时间线

系统信息工具学习笔记(15.12):LoadOrder——驱动和服务的加载顺序一眼看懂

适用读者:Windows 运维 / 驱动开发 / 安全分析 / 蓝队同学,尤其是遇到 “开机就蓝屏 / 某驱动疑似冲突 / 某安全软件声称要抢先启动” 这类场景时。


一、LoadOrder 是干嘛的?

一句话:LoadOrder 用来查看系统开机时,各类驱动和服务的加载顺序与依赖关系。

相比 msconfig / services.msc 这些 GUI 工具,LoadOrder 的特点是:

  • 聚焦驱动 & 早期服务的启动顺序(Boot / System / Auto / Demand 等)
  • 能看到服务所属驱动、启动组(Group)、依赖等信息
  • 纯命令行文本输出,便于重定向、比对、发给同事一起分析

你可以把它当成:

“谁在最早占坑”的系统级启动时间线视图。


二、下载安装与基础用法

2.1 获取方式

它仍然是 Sysinternals 家族成员之一:

  • 在 Sysinternals 官方套件中找到 LoadOrder.exe

  • 放到你的工具目录,例如:

    C:\\Tools\\Sysinternals

  • 建议将目录加入 PATH,这样任意命令行都能调用:

    setx /M PATH "%PATH%;C:\\Tools\\Sysinternals"

  • 权限建议:使用“管理员命令行 / 管理员 PowerShell”运行,才能完整读取驱动 / 服务信息。


    2.2 最小可用示例

    直接列出所有驱动 / 服务及其加载顺序:

    loadorder

    典型输出(示意):

    Group Order Driver/Service
    ———— —– ————————-
    Base 0 ACPI
    Base 1 hal
    Base 2 NDIS
    File System 0 FltMgr

    几个常见字段(不同版本可能略有差异):

    • Group:启动组(如 Base、File System、Network 等)
    • Order:在组内的相对加载顺序
    • Driver/Service:驱动 / 服务名称(SCM 名字,不一定等于文件名)

    三、理解“加载顺序”的几个关键点

    Windows 启动时,内核会按 启动类型 + 启动组 + 组内顺序 来加载驱动与核心服务。 LoadOrder 展示的,实际上就是这张“启动脚本执行顺序表”。

    3.1 启动类型(Start Type)

    常见类型:

    • Boot:极早期随内核加载(例如存储驱动)
    • System:内核初始化稍后加载
    • Auto:服务控制管理器(SCM)启动后自动启动
    • Demand:按需启动(不在最初的“排队”里)
    • Disabled:禁用,不会加载

    3.2 启动组(Group)

    可以类比“分车道排队”:

    • Base 组:系统最基础的驱动(如 ACPI、hal 等)
    • File System 组:文件系统 / 过滤驱动
    • Network 组:网络栈相关驱动

    3.3 组内顺序(Order)

    • 同一个 Group 内,从 0 开始依次加载
    • 数字越小,越早被加载

    所以你可以这样理解整体顺序:

    “先看哪个组优先级在前,再看组内谁排在前面。”


    四、典型使用场景

    场景 1:排查某驱动导致的蓝屏

    蓝屏分析里常见一句话:

    “怀疑某第三方驱动过早加载 / 与某过滤驱动冲突。”

    此时可以先导出当前加载顺序:

    loadorder > C:\\Temp\\loadorder.txt

    然后:

  • 在文本中搜索该驱动名(例如 myfilter)
  • 看它所在的 Group 和 Order
  • 与同组其他驱动对比(例如某安全软件、磁盘过滤、杀毒驱动)
  • 如果你发现:

    • 某个第三方驱动被塞进了非常靠前的组(如 Base / File System)
    • 或者与系统自带关键驱动顺序紧贴、甚至“夹在中间”

    那就有理由把它列入 蓝屏嫌疑人名单 Top N,后续再配合 dump / 事件日志做进一步确认。


    场景 2:安全 / 防护软件“谁占坑更早”

    很多安全软件、DLP、加解密、杀毒引擎,都会强调一句话:

    “我们是最早加载的,可以先于其他驱动进行保护。”

    用 LoadOrder 可以直接做“体检”:

    • 对比各家安全软件驱动的 Group 与 Order
    • 看谁的核心驱动排在更前面
    • 评估 “谁能更早接管文件 / 网络 / 注册表的操作路径”

    对于安全基线评审也很有用,你还能顺带发现一些:

    • 来路不明的早期加载驱动
    • 可能的持久化 / Rootkit 入口

    场景 3:与 Autoruns / RAMMap / Process Explorer 联动分析

    LoadOrder 本身只给你 “启动时刻的顺序”,它不知道:

    • 驱动当前是否仍在内存中?
    • 对应文件具体路径在哪里?
    • 驱动占多少内存、句柄、I/O?

    可以这样打组合拳:

  • LoadOrder
    • 确认该驱动在启动链中的位置(Group + Order + 名称)
  • Autoruns
    • 查出该驱动 / 服务的 注册表 / 启动项来源
    • 拿到 精确文件路径和签名信息
  • Process Explorer / RAMMap
    • 查看该驱动当前是否在内存中
    • 观察内存占用、关联进程、I/O 活动情况
  • 最后一步:如果确认是垃圾 / 恶意 / 冲突驱动,在测试环境中禁用相应服务 / 驱动 + 多次重启验证。


    五、常用操作示例

    5.1 只关注某个组或关键字

    部分环境中驱动非常多,全量输出太长。 可以重定向后配合 findstr 使用,只看自己关心的关键字。

    示例:只关注网络相关加载顺序:

    loadorder | findstr /I "Network NetBT NDIS"

    思路:用 LoadOrder 做“全集”,再用 findstr 做“过滤镜头”。


    5.2 导出并对比不同时间的启动顺序

    例如:部署了新杀毒或新驱动之后,想比较“变了什么”。

    :: 部署前
    loadorder > C:\\Temp\\loadorder_before.txt

    :: 部署后
    loadorder > C:\\Temp\\loadorder_after.txt

    然后用 Beyond Compare / WinMerge / VS Code Diff 等工具做差异比对,你就能看到:

    • 新增了哪些 Group / 驱动
    • 某些驱动是否被挪了组、调整了顺序

    这类对比非常适合写到变更记录 / 安全评审报告里: “本次变更后,以下驱动新增或发生顺序变化。”


    六、注意事项与风险提示

  • LoadOrder 不做修改
    • 它是纯“只读”工具,不会改注册表或服务配置,使用上非常安全
  • 真正修改加载顺序需要改注册表 / 服务配置
    • HKLM\\SYSTEM\\CurrentControlSet\\Services\\…
    • 涉及 Group、Tag、Start 等字段
    • ⚠ 随便改非常容易把系统玩坏:
      • 启动失败、蓝屏
      • 文件系统 / 磁盘损坏风险
  • 务必先在测试环境演练
    • 任何对驱动启动顺序的调整,都必须在测试环境重启多次确认可靠
    • 保留可回滚方案(快照 / 镜像 / 备份)

  • 七、写在最后:把“黑盒启动过程”变成可读的时间线

    LoadOrder 的界面甚至称不上“界面”,就一个命令行输出。 但它解决的是一个很核心的问题:

    Windows 启动时,到底是谁先上的车?谁在最底层拦截了请求?

    这对以下几类工作特别重要:

    • 排查蓝屏 / 驱动冲突
    • 分析第三方安全软件的接入方式
    • 评估系统启动链的安全性(有没有可疑驱动插队)

    建议你在日常排障工具包里,把 LoadOrder 和:

    • Autoruns
    • Process Explorer
    • RAMMap

    放在同一层级。

    一旦启动问题牵涉到 “驱动 & 服务的顺序”, 这几个工具配合起来,基本就是你的:

    Windows 启动链 CT 扫描机, 帮你把原本黑盒的启动过程,变成一条可以逐行阅读的时间线。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 系统信息工具学习笔记(15.12):LoadOrder——驱动和服务的加载顺序一眼看懂
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!