Office 激活实操:许可证钩子原理与 5 分钟部署步骤
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
ohook 是一个 Office 激活钩子工具:把一个钩子 DLL 放进 C2R 版 Office 的加载目录,让 Microsoft 365 订阅版保持全部功能,不修改任何系统文件。适合有命令行基础、自己维护一两台 Windows 办公机的用户。
它到底改了什么:钩住 Office 激活检查的那一步
Office 真正查许可证的动作只发生在应用启动时,会调用 SPP 子系统的SLGetLicensingStatusInformation函数,根据返回的本地授权状态决定是否降级运行。
ohook 的思路是让 Office 加载"自己的"sppc.dll:C2R 安装会优先从root\vfs\System目录加载这个库,把一个同名钩子库放进去即可顶替系统版本,全程不碰系统文件。
核心拦截逻辑在 sppc.c 的SLGetLicensingStatusInformationHook函数里:先让系统 API 照常返回真实状态,再把非"未授权"的条目统一改写为SL_LICENSING_STATUS_LICENSED,同时把宽限期天数和到期时间清零。
增强版(plus)在此基础上多做一件事:把注册表里的TimeOfLastHeartbeatFailure写到 2040 年,让 Office 不再联网查询订阅到期时间。
两种构建,Office 激活前怎么选
| 版本 | 多做了什么 | 什么时候用 |
|---|---|---|
| 普通版 | 仅改写许可证状态查询结果,不碰注册表 | 默认选择,特征少、误报少 |
| 增强版(plus) | 额外把注册表TimeOfLastHeartbeatFailure写入 2040 年,屏蔽在线订阅检查 | 本地放行后仍频繁弹出订阅到期横幅 |
拿不准就选普通版。
🔧 跟着做:完成 Office 激活的 4 个步骤
第 1 步:获取源码并编译。这条命令拉取仓库并用 MinGW 工具链编译钩子 DLL(需要 Windows 上的 mingw32/mingw64 环境):
git clone https://gitcode.com/gh_mirrors/oh/ohook cd ohook make构建成功后目录里会多出 sppc32.dll 和 sppc64.dll,之后按你 Office 的位数取对应文件。没有编译环境的话,也可以直接从 ohook 的授权分发渠道获取对应 DLL。
第 2 步:创建系统链接。以管理员身份打开 CMD。这条命令在 Office 的 System 目录里建一个名为 sppcs.dll 的符号链接,指向系统自带的 sppc.dll,供钩子库内部转发真实调用:
mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll"提示"已创建符号链接"即为成功。
第 3 步:复制钩子文件完成 sppc.dll 替换。这条命令把编译好的钩子库复制为 Office 会加载的 sppc.dll(32 位 Office 请换成 sppc32.dll):
copy /y sppc64.dll "%programfiles%\Microsoft Office\root\vfs\System\sppc.dll"复制完成后,Office 下次启动加载的就是钩子库。
第 4 步:安装空白密钥。钩子只负责把状态改写成"已授权",还得先装一个对应版本的空白密钥。以 Microsoft 365 家庭版为例:
cd "%programfiles%\Microsoft Office\root\Office16" cscript //nologo ospp.vbs /inpkey NBBBB-BBBBB-BBBBB-BBBBG-234RY看到安装成功提示后重启 Office 应用,横幅消失、功能完整,即完成激活。其他版本对应的密钥如下:
| 版本 | 营销名称 | 空白密钥 |
|---|---|---|
| O365HomePrem | Microsoft 365 家庭版 | NBBBB-BBBBB-BBBBB-BBBBG-234RY |
| O365ProPlus | Microsoft 365 企业应用版 | NBBBB-BBBBB-BBBBB-BBBCF-PPK9C |
📌 出问题了查这里
现象:弹出"检查此设备许可证状态时出现问题"横幅。原因:本地状态已放行,但 Office 仍会请求
ols.officeapps.live.com核对订阅,服务返回"无关联订阅"就会弹横幅。处理:在 hosts 文件中加一行0.0.0.0 ols.officeapps.live.com。现象:Office 更新后横幅又回来了。原因:更新会重写 C2R 的 System 目录,钩子文件丢失,需要 Office 更新后重新激活。处理:按第三节重做第 2、3 步即可,密钥通常不用重装。
现象:杀毒软件把 sppc.dll 报为威胁。原因:钩子库会顶替同名系统模块,命中启发式规则,多为误报。处理:将 ohook 相关文件加入白名单,或优先用不写注册表的普通版。
现象:步骤全部做完仍提示未激活。原因:不是 C2R 安装(如 MSI 版),或 DLL 位数与 Office 不匹配。处理:确认安装目录存在
root\vfs结构;32 位 Office 使用 sppc32.dll。
⚙️ 给想深入的人
想自己编译的话,全部逻辑就在 sppc.c 一个文件里。Makefile 中sppcplus32.dll、sppcplus64.dll两个目标比标准版只多了-DPLUS_BUILD宏,plus 专用的注册表修改代码正是靠这个编译开关包起来的。dlltool 会根据 sppc.def 和 sppcs*.def 生成导入库,供钩子库内部调用真正的系统函数。
多台机器部署可以做成批处理,通过域脚本或 GPO 分发,前提是目标机已确认是 C2R 安装:
@echo off set OFFICE=%programfiles%\Microsoft Office\root\vfs\System mklink "%OFFICE%\sppcs.dll" "%windir%\System32\sppc.dll" copy /y sppc64.dll "%OFFICE%\sppc.dll"兼容性边界要注意三点:只支持 C2R(Click-to-Run)安装,MSI 独立安装包没有root\vfs结构,不适用;DLL 位数要跟 Office 安装位数一致,而不是系统位数;它只解决本地许可证状态,OneDrive 1TB 空间、Excel 内置 Python 这类在线订阅功能不会解锁。
项目代码以 MIT 协议开源,请遵守当地法规与软件许可条款,仅用于学习和研究。
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考