尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ohook Office激活指南:让订阅版Office启用完整本地功能

ohook Office激活指南:让订阅版Office启用完整本地功能 ohook Office激活指南让订阅版Office启用完整本地功能【免费下载链接】ohookAn universal Office activation hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohookohook 是一款开源的 Office 激活工具面向 Microsoft 365 等订阅版本它在 Office 安装目录里放一个钩子 DLL让 Office 启动时查询许可证状态时得到“已授权”的返回值从而启用订阅版的完整本地功能。一个不太直观的事实是订阅版 Office 对未订阅机器所做的本地功能限制几乎全部来自启动时的一次 API 调用——SLGetLicensingStatusInformation。只要这次调用返回有效的许可状态Office 就不再限制本地功能。ohook 的全部做法就是包住了这一个调用。能做什么、不能做什么先确认目标能做在已安装 C2RClick-to-Run方式 Office 的 Windows 机器上让未订阅的 Microsoft 365 等版本按已授权状态运行本地功能完整可用。不能做OneDrive 容量、Excel 中的 Python 等依赖云端账号的服务不受影响——钩子只改本地许可状态不产生任何云端授权非 C2R 的传统 MSI 安装不适用readme 给出的步骤全部基于 C2R 目录结构官方示例以“64 位 Windows 上的 64 位 C2R Office”为准。确认你的场景落在“能做”一侧再往下走。安装前检查架构、版本与对应空白密钥部署前先核对三件事安装方式%programfiles%\Microsoft Office\root\vfs目录存在即 C2R 安装架构64 位 Office 用sppc64.dll32 位 Office 用sppc32.dll版本Edition决定安装哪把空白密钥。readme 收录了两个最常见版本的密钥Edition市场名称空白密钥O365HomePremMicrosoft 365家庭高级版NBBBB-BBBBB-BBBBB-BBBBG-234RYO365ProPlusMicrosoft 365 企业应用版NBBBB-BBBBB-BBBBB-BBBCF-PPK9Cohook 安装步骤构建、建链接、复制、装密钥1. 获取并构建项目git clone https://gitcode.com/gh_mirrors/oh/ohook cd ohook make构建需要 MinGW 环境Makefile 中默认调用C:/mingw32和C:/mingw64下的编译器。执行后一次产出四个产物sppc32.dll、sppc64.dll以及带-DPLUS_BUILD宏编译的sppcplus32.dll、sppcplus64.dll。若你已拿到现成 DLL可跳过本步。2. 在 Office 目录建一条指向原库的链接管理员终端mklink %programfiles%\Microsoft Office\root\vfs\System\sppcs.dll %windir%\System32\sppc.dll这一步在 Office 目录创建符号链接sppcs.dll指向系统原始的sppc.dll。钩子 DLL 的导出表sppc.def会把除被钩函数之外的全部导出转发给这个sppcs.dll因此实际只拦截一个函数其余调用原样透传。3. 放入钩子copy /y sppc64.dll %programfiles%\Microsoft Office\root\vfs\System\sppc.dll这一步把钩子 DLL 以sppc.dll的名字放入 Office 目录。此后 Office 加载许可库时加载的就是 ohook。32 位 Office 请改用sppc32.dll路径改为实际安装目录。4. 安装空白密钥在 Office 的“激活”对话框中填入上表对应版本的空白密钥。完成后机器上安装的产品即为对应的订阅版本为钩子提供一个“本地许可证”作为生效基础。为什么只需要钩住一个函数两个事实Office 真正的许可检查只在应用启动时发生走SLGetLicensingStatusInformation这一个函数该函数返回一个许可状态数组条目状态、宽限天数、到期时间都由这个返回结构决定。核心源码 sppc.c 只有一百来行SLGetLicensingStatusInformationHook先调用真实函数拿结果再遍历返回条目对非UNLICENSED且非宽限期产品SKU 名含 “Grace”的条目把状态置为SL_LICENSING_STATUS_LICENSED并把宽限时间、原因码、到期字段清零。plus 版在此之上额外写入一个注册表值细节见下文排障部分。这里可以顺带解释一个常见疑问为什么不直接装 2016 版的 Mondo 许可Mondo 许可能让应用跑起来但它只被部分更新对应的产品策略product policy缺少新版许可中的条目而策略以零散的office-UUID条目形式存在无法预先判断哪些功能会失效。ohook 这条路使用安装版本自身的正确许可功能可用性更可预期。体积方面整个钩子源码百行左右DLL 仅数 KB启动时多加载一份小库的开销不可感知。验证与失效处理出现许可证横幅时怎么办部署完成后重启 Word 或 Excel。界面不再出现许可警告横幅即部署成功若仍出现“检查此设备许可证状态时出现问题”横幅对照下面三种情况处理。情况一许可证检查横幅仍出现原因是部分版本在本地许可检查之后还会向ols.officeapps.live.com服务请求订阅到期日期以决定本地许可是否续期服务返回“设备无订阅”时横幅就显示出来了。两种处理方式方式 A在 hosts 文件中加入一行0.0.0.0 ols.officeapps.live.com该请求即被本地拦截。方式 B改用 plus 构建构建行为适用场景sppc64.dll普通版只钩许可状态响应默认推荐侵入面小被杀毒软件误报的概率更低sppcplus64.dllplus 版在钩子之外把TimeOfLastHeartbeatFailure注册表值写入未来日期使在线订阅查询不再触发出现横幅且不便改 hosts 的环境plus 版写入的位置是HKCU\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency值为2040-01-01T00:00:00Z。情况二杀毒软件误报readme 的官方建议是优先使用普通版——它不写注册表行为面更小。出现误报时先换普通版并把相关文件加入信任列表。情况三Office 更新后失效C2R 更新机制会重写安装目录观察到的表现是放置的两个文件被清掉。先检查root\vfs\System下sppc.dll与sppcs.dll是否还在缺失就重跑上面第 2、3 步空白密钥不受影响。回滚方法与注意事项回滚分两步删除 Office 目录中的sppc.dll钩子和sppcs.dll符号链接。系统原生的%windir%\System32\sppc.dll只被链接、未被改动删除后系统侧无残留若用过 plus 版把TimeOfLastHeartbeatFailure注册表值删除或改回原值。另外两点来自 readme 的说明该项目主要面向合作渠道发布作者不为终端用户提供直接支持上述步骤基于其内部测试项目以 MIT 协议开源。下一步若前置检查三项都满足直接以管理员终端执行第 2、3 步的两条命令重启 Office 后横幅不再出现即完成部署不符合预期时按“验证与失效处理”一节的三种情况依次对照。⚠️ 合规提示ohook 的机制是拦截本地许可状态检查使订阅版 Office 呈现完全授权状态。在未持有有效订阅的设备上使用可能违反软件许可协议及相关法规本文仅说明该项目的技术方案与操作边界请结合实际使用场景与当地法律自行评估。【免费下载链接】ohookAn universal Office activation hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表