Windows HLK(Windows Hardware Lab Kit,硬件实验室工具包)是微软用于驱动和硬件兼容性认证(WHQL / WHCP)的官方工具。要把一个内核驱动提交到微软签名,就必须在 HLK 环境里跑完对应的测试、生成 .hlkx 提交包。

这套流程第一次接触会有点绕。本系列分两篇:

  1. 环境准备(本篇)——搭好 Controller 和测试机。
  2. 开始测试——建池、建项目、跑测试、打包提交。(见 第二篇:开始测试

拿到认证之后,如果只需要改 INF 等非 PE 文件做 OEM 客制化,可以走 DUA 流程跳过重测,见 Driver DUA 操作指南

本文以 Windows Server 2025 认证为目标环境,用一台装了 Hyper-V 的物理机跑 Controller 虚拟机,另一台物理机作测试机。其他 OS 版本流程基本一致,仅版本号和 playlist 不同。

一、理解 HLK 的架构

正式动手前,先搞清楚谁是谁,这能让后面每一步都不迷糊。HLK 环境由三个角色组成:

角色说明本文对应
Controller(控制器)安装 HLK Controller + Studio,负责下发任务、收集结果、打包。是整个测试的“大脑”。Server 机上的 WS2025 虚拟机
Test Client(测试机)装了待测驱动/硬件的机器,实际执行测试。一台纯净系统的物理机
网络Controller 和测试机必须在同一子网、能互相访问。一台路由器组建局域网

工作方式:Controller 通过网络把测试任务推送到测试机执行,测试机把结果回传给 Controller,最后由 Controller 打成 .hlkx 包提交微软。

HLK 测试环境拓扑:Server 物理机上的 Controller 虚拟机与物理测试机同处一个子网路由器 / 交换机同一局域网 · 同一子网(如 192.168.1.0/24),三台机器可互相 ping 通Server 物理机 · Windows Pro启用 Hyper-V,承载 Controller 虚拟机Controller 虚拟机 · WS2025Datacenter + 桌面体验(不能是 Server Core / 域控)▸ HLK Controller(任务调度引擎)▸ HLK Studio(管理界面)▸ 结果数据库(SQL Server)▸ 共享目录 \\<HLKController>\HLKInstall一个 Controller 最多管 150 台测试机测试机 · 物理机不支持虚拟机;须为专用、纯净的英文系统▸ 目标 OS(与认证对象一致,英文版)▸ Secure Boot:关闭▸ bcdedit testsigning:开启▸ HLK Client(进程 HLKSvc.exe)▸ 待测驱动(已测试签名)▸ C:\DVL\<驱动名>.DVL.XML一台测试机只能归属一个 Controller① 下发测试任务 · TCP 1771② 回传结果与日志③ SMB 共享 · TCP 445装客户端 / 分发测试内容.hlkx提交微软 Hardware Dev Center由 Controller 打包生成 .hlkx
HLK 环境的三个角色与它们之间的通信

几条容易踩坑的硬性约束:

  • Controller 不能装在域控制器上,也不能装在 Server Core 上,且只支持 Server 的 Standard / Datacenter 版。
  • 一台测试机只能归属一个 Controller;反过来,一个 Controller 最多可管理 150 台测试机。
  • Controller 与测试机之间除了 TCP 1771,还要走 SMB 文件共享——客户端安装包和测试内容都是从 \\<Controller>\HLKInstall 这类共享目录拉取的,所以名称解析(能按计算机名访问)也必须正常。

工作组还是域?

官方支持两种部署方式,本文用的是更简单的工作组方式:

域环境工作组环境(本文)
最少机器3 台(域控 + Controller + 测试机,域控不能与 Controller 同机2 台(Controller + 测试机,加入同一工作组)
账户要求各机加入同一域不要使用内置 Administrator 账户;需在每台机器上新建一个管理员账户,用它登录,并启用 Guest 账户

工作组环境下"启用 Guest 账户 + 不用内置 Administrator"是官方明确要求,漏掉这一步经常表现为客户端连不上 Controller、或者共享目录访问被拒。

二、物理准备

需要准备的硬件:

  • Server 机:一台物理机,安装 Windows 专业版(Pro),用来开 Hyper-V 承载 Controller 虚拟机。
  • 测试机:一台纯净系统的物理机(待测驱动就装在这台上)。
    • 必须是物理机——官方不支持在 Virtual PC 或任何第三方 Hypervisor 里跑测试机。
    • 建议预留 300 GB 以上磁盘空间——测试会产生海量日志。
    • 应为专用测试机,不要拿日常办公机来测。
    • 装好客户端后不要更换硬盘:HLK 用机器标识绑定客户端,换盘会破坏绑定关系。
  • 路由器:把 Server 机和测试机接入同一个局域网 / 同一子网

为什么测试机要“纯净系统”? HLK 会对系统做大量改动、频繁重启,多余的软件容易干扰测试结果甚至导致失败。用干净安装的系统最稳妥。官方还特别提醒:测试机上不要存放(也不要曾经存放过)敏感信息。

Controller 侧的资源要求也别按最低配给——它要装 SQL Server 存所有结果和日志:

最低建议
内存2 GB4 GB 以上
磁盘300 GB越大越好,日志增长很快
网络100 Mbps1 Gbps

三、软件准备

  • Windows Server 2025 ISO(en-us 英文镜像)——用来装 Controller 虚拟机。
    • 可从微软评估中心下载:Download Windows Server 2025(提供 180 天评估版 ISO,注意选 en-us 语言)。
    • 必须用英文版(英文语言 + 英文区域设置),这是官方要求,不只是"建议"。测试机上的被测系统同样要装英文版。
    • 安装时选 Datacenter 版、且带桌面体验(Server with Desktop Experience,即“完整服务器/带 GUI”),不要选 Server Core。后面的 Static Tools Logo Test 在 Core 上会报错。
  • HLK 安装包——从微软官网下载,版本要与你认证目标 OS 匹配(WS2025 用对应的最新 HLK)。
    • 记住:HLK 版本、playlist 版本、被测 OS 版本三者要对应一致。
HLK 套件版本、认证目标 OS、Playlist 版本三者必须一致HLK 套件版本如 HLK 24H2(updated Jan 2025)认证目标 OS测试机上安装的被测系统Playlist 版本官方发布的测试项清单 XML三者版本必须一致任一环不匹配,结果都不能用于提交一套环境同时只能存在一个 HLK 版本:升级前必须先卸载 Controller 与所有测试机上的旧版 HCK / HLK。要认证多个 OS 版本,需为每个版本准备独立环境分别测试,最后用 Merge Package 合并成一个提交包。
版本对齐关系:任一环错位,测试结果都无法用于提交

微软 HLK 下载页获取对应版本的安装包。

关于版本,还有两件事必须先知道:

  1. HLK 版本反过来限制 Controller 能装在哪个 Server 上。 例如 Windows Server 2025 只有从「HLK 24H2(updated Jan 2025)」这一版起才被支持作为 Controller 宿主系统;更早的 HLK 装在 WS2025 上不受支持。所以选 ISO 之前先确认你要用的 HLK 版本支持哪些 Server 版本。
  2. 一套环境同时只能存在一个 HLK 版本。 要升级 HLK,必须先把 Controller 和所有测试机上的旧版 HCK / HLK 卸载干净,不能并存。这也是为什么"同一个驱动认证多个 OS 版本"的正规做法是准备多套环境分别测试、最后合并(见第二篇的 Merge Package)。

下载与安装前的检查清单:

  • 在服务器上直接下载时,需要先关闭 IE 增强安全配置(IE ESC),否则下载页打不开。
  • 下载器弹出时选择 Run(运行),不要选 Save——Save 只会存下一个引导安装程序,拿不到完整套件。
  • 安装 HLK 前必须卸载 32 位 SQL Server(不支持),以及 SQL Server 2014 / 2015 / 2016 / 2017
  • 若机器上没有 .NET Framework 4.5,安装程序会先装它并要求重启,重启后需从头再跑一遍安装流程。

四、Server 准备(搭建 Controller)

1. 开启 Hyper-V

在 Server 机(Windows Pro)上启用 Hyper-V。可用 PowerShell(管理员):

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

或走「控制面板 → 程序 → 启用或关闭 Windows 功能 → 勾选 Hyper-V」。按提示重启。

2. 创建 Windows Server 2025 虚拟机

在 Hyper-V 管理器中新建虚拟机:

  • 使用 第二代(Generation 2) 虚拟机。
  • 分配足够资源:建议 4 vCPU / 8 GB+ 内存 / 300 GB+ 磁盘
  • 挂载 WS2025 的 en-us ISO,安装 Datacenter(带桌面体验)
  • 装好后完成初始化(设置管理员密码、打补丁)。

3. 配置网络(关键)

必须让 Server 机、Controller 虚拟机、测试机三者处于同一子网、能互通:

  1. 在 Hyper-V 管理器 →「虚拟交换机管理器」新建一个 外部(External)虚拟交换机,桥接到 Server 机的物理网卡。
  2. 把 Controller 虚拟机的网络适配器连接到这个外部交换机。
  3. 确认三台机器都从路由器拿到同一网段的 IP(例如都是 192.168.1.x),并能互相 ping 通。
  4. 给 Controller 虚拟机配静态 IP 或 DHCP 保留,避免重启后地址漂移导致客户端失联。

防火墙:HLK 客户端与 Controller 通过 TCP 1771 端口通信。若有第三方防火墙,需手动放行 1771,否则客户端安装或通信会失败。此外客户端安装与测试内容分发走 SMB(TCP 445),同样需要放行,并保证测试机能按计算机名访问 Controller。

先把计算机名定下来。 安装 HLK 之前就把 Controller 虚拟机的计算机名改成你想要的(简短、纯 ASCII),装完之后 Controller 和测试机都不支持改名

4. 在虚拟机中安装 HLK Controller + Studio

在 WS2025 虚拟机里运行 HLK 安装包:

  1. 运行 HLKSetup.exe
  2. 选择 Install the Windows Hardware Lab Kit to this computer
  3. 组件选择 Windows Hardware Lab Kit — Controller + Studio
  4. 允许开放端口、接受许可协议。
  5. 安装约需 45 分钟。装完后 Controller 会自动共享出客户端安装目录 \\<ControllerName>\HLKInstall\

至此 Controller 就绪。记下这台虚拟机的计算机名(下文用 <HLKController> 表示),测试机安装客户端时要用。

趁现在打一个快照。 这正是把 Controller 放在虚拟机里的最大好处:在 Hyper-V 管理器中给这台干净装好的 Controller 建一个检查点(Checkpoint)。以后测试环境被搞乱、或者需要换 HLK 版本重来,直接回滚即可,省掉 45 分钟重装。

五、测试机准备

1. 安装纯净系统

在测试机上干净安装目标 OS(与你要认证的 OS 一致),注意:

  • 必须是英文语言 + 英文区域设置的版本。
  • 若被测系统是 Windows Server,安装时同样选 Datacenter 并选 Full Server / Server with a GUI
  • 若被测系统是 Windows 的 “N” 版,需要手动装上 Media Feature Pack,否则部分测试无法运行。

2. 禁用安全启动、开启测试模式

进 BIOS/UEFI:

  • 禁用 Secure Boot(安全启动)。开着安全启动会导致 HLK 客户端安装失败,且不少测试项要求关闭它(完整清单见官方System testing with Secure Boot)。
  • 顺便把启动项设为从硬盘的常规引导扇区启动,不要保留 U 盘 / 光盘优先引导——测试过程中机器会反复重启,一次引导到别的设备上整轮测试就废了。

顺序很重要:必须先关掉 Secure Boot,再开测试签名。 Secure Boot 开启时 bcdedit 会因为安全启动策略保护而拒绝写入。进系统后,以管理员命令提示符执行并重启:

bcdedit /set testsigning on

为什么必须开测试模式? 测试用的驱动通常只做了测试签名而非正式签名。不开测试模式系统会拒绝加载,而且 Static Tools Logo Test 只有在驱动被测试签名时才会正确出现和告警(详见第二篇)。开启后桌面右下角会出现“测试模式”水印,属正常现象。

3. 电源设置

建议测试机接通电源,并把「电源选项 → 使计算机进入睡眠状态」设为从不,避免测试中途休眠。

4. 工作组账户(工作组环境必做)

如果 Controller 和测试机没有加入域(本文即是),在每一台机器上都要:

  1. 新建一个用户账户并加入 Administrators 组;
  2. 用这个新账户登录(不要用内置的 Administrator 账户);
  3. 启用 Guest 账户

这三步是官方对工作组部署的明确要求,跳过它们后面很容易出现客户端连不上 Controller、共享目录访问被拒之类的问题。

5. 安装 HLK Client

网络路径运行 Controller 共享出来的客户端安装脚本。以管理员命令提示符(不要用 PowerShell)执行:

\\<HLKController>\HLKInstall\Client\Setup.cmd /qn ICFAGREE=Yes
  • <HLKController> 换成 Controller 虚拟机的计算机名。
  • /qn 为静默安装,ICFAGREE=Yes 表示同意开放防火墙端口。
  • 也可以不加 /qn 走图形向导:向导里在“Internet Connection Firewall Agreement”页选择允许开放端口。
  • 安装过程会自动装上 .NET Framework 4、Application Verifier、WDTF、Windows Performance Toolkit 等依赖。

注意

  • 脚本必须从网络路径\\...)运行,不能从映射的盘符运行。
  • 若通信端口被挡,手动放行 TCP 1771
  • 客户端装好后不会出现在“添加/删除程序”里,但任务管理器中应能看到 HLKSvc.exe 进程在运行——以此确认安装成功。
  • 客户端装好后不要再改测试机的计算机名,否则不受支持。

6. 准备并安装待测驱动

  • 准备好已测试签名的待测驱动程序。
  • 在测试机上安装该驱动,然后重启
  • 重启后确认设备管理器中驱动已正常加载。

7. 确认测试机已被 Controller 认到

回到 Controller 上打开 HLK Studio → Configuration 页,测试机应当自动出现在 Default Pool 里(可能需要等几分钟)。看到它就说明客户端与 Controller 通信正常,可以进入第二篇了。

小结

到这里,一个完整的 HLK 测试环境就搭好了:

  • ✅ Server 机开启 Hyper-V,承载一台 WS2025 Controller 虚拟机(已装 Controller + Studio),并打好了检查点。
  • ✅ Controller、测试机、Server 机同处一个子网,互通,放行了 TCP 1771 与 SMB。
  • ✅ 工作组环境下三台机器都建了专用管理员账户并启用了 Guest。
  • ✅ 测试机为物理机、纯净英文系统、关安全启动、开测试模式,装好 HLK Client,并装好待测驱动。
  • ✅ HLK 套件版本 / 被测 OS / playlist 三者版本对齐。

环境就绪后,就可以进入正式测试:新建机器池、创建项目、加载 playlist 跑测试、打包提交。下一篇继续 → Windows HLK 驱动认证(二):开始测试