菜单

脚本架构

相关源文件

本文档描述了Microsoft激活脚本 (MAS) 的架构和设计,详细说明了各个组件如何相互作用和协同工作。它为理解代码库结构、执行流程以及不同激活方法和实用程序之间的关系提供了技术参考。

有关使用特定激活方法的信息,请参阅 激活方法 部分中的相应文档。

高层架构概述

Microsoft激活脚本采用模块化架构设计,以一个作为统一界面的主脚本 (MAS_AIO.cmd) 为中心。该系统包含多种激活方法和支持功能,所有这些都可以通过通用的菜单驱动界面进行访问。

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd310-403

脚本初始化流程

脚本启动时,会经历一个全面的初始化过程以确保正常运行

  1. 环境设置:设置重要的环境变量和路径
  2. 架构检查:如有必要,会以x64/ARM64进程重新启动
  3. 服务检查:验证Null服务是否正在运行
  4. 权限提升:确保脚本以管理员权限运行
  5. 快速编辑模式:禁用快速编辑以防止脚本冻结
  6. 更新检查:查找MAS的新版本
  7. 系统兼容性:验证Windows版本和内部版本兼容性

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd22-150

脚本提供了一个基于文本的菜单界面,用于导航各种功能

主菜单在脚本中实现,并通过 choice 命令处理用户输入。该界面设计简洁直观,选项编号清晰,并带有颜色编码以便更好地查看。

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd332-403 MAS/All-In-One-Version-KL/MAS_AIO.cmd416-446

激活方法实现

每种激活方法都作为脚本中的一个独立函数实现,遵循一致的模式

  1. 初始化:设置变量和参数
  2. 兼容性检查:验证系统是否可以使用此激活方法
  3. 诊断:运行测试以检查潜在问题
  4. 激活过程:执行激活程序
  5. 结果报告:向用户显示结果

HWID激活流程

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd549-1066

Ohook激活流程

Ohook激活函数针对Office产品,其模式与HWID类似,但包含Office特有的操作

  1. 检查支持的Office版本
  2. 验证ClickToRun服务状态
  3. 创建原始文件备份
  4. 安装Ohook文件
  5. 验证激活

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd2068-3100

命令行界面

MAS支持命令行参数,可用于无人值守操作,这对于自动化部署和脚本编写特别有用

脚本在启动时处理这些参数,如果检测到有效参数,则会绕过菜单系统。这使得可以通过计划任务或部署脚本实现静默激活。

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd109-124 MAS/All-In-One-Version-KL/MAS_AIO.cmd300-309

诊断系统架构

诊断系统是确保激活方法正常运行的关键组成部分

诊断系统

  1. 验证服务状态并尝试纠正问题
  2. 检查注册表损坏情况
  3. 检测潜在的恶意软件干扰
  4. 验证许可证文件和权限
  5. 测试网络连接
  6. 提供具体的错误信息和故障排除步骤

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd1426-1833

激活状态检查架构

Check Activation Status 函数提供有关Windows和Office产品当前激活状态的详细信息

此模块结合使用WMI查询、注册表检查和PowerShell命令来收集全面的激活信息。它可以检测

  1. 激活状态(已授权、宽限期、通知等)
  2. 许可证类型(零售、批量、KMS等)
  3. 剩余宽限期
  4. 产品密钥
  5. KMS客户端信息
  6. 数字许可证状态
  7. Office vNext 和共享计算机许可状态

来源:MAS/Separate-Files-Version/Check_Activation_Status.cmd11-1142

$OEM$文件夹提取系统

$OEM$文件夹提取功能创建一个软件包,可用于在安装过程中预激活Windows

此系统创建一个具有自动化脚本的文件夹结构,Windows安装程序可以使用这些脚本在安装期间激活系统,从而实现零接触部署场景。

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd447-546

实用函数

脚本包含许多支持主要操作的实用函数

功能目的关键操作
dk_color显示彩色文本使用ANSI转义码或PowerShell显示彩色输出
dk_actids获取激活ID使用WMI检索产品激活ID
dk_product获取产品信息获取Windows产品名称和信息
dk_checksku检查SKU值确定Windows SKU以进行激活
dk_reflectionPowerShell反射创建.NET类型以进行高级操作
dk_reeval触发重新评估触发SPP重新评估激活状态
dk_actid获取已安装ID获取已安装的产品激活ID
dk_refresh刷新许可证状态刷新许可证状态
dk_checkperm检查永久激活检查Windows是否已永久激活

这些实用函数构成了脚本功能的主干,提供了可重用的组件,供主要激活方法和支持函数调用。

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd1048-1385 MAS/All-In-One-Version-KL/MAS_AIO.cmd1906-1936

数据架构

该脚本依赖于几个数据结构来管理激活信息

  1. 产品密钥:存储在脚本中,用于不同版本和激活方法
  2. GenuineTicket 数据:包含用于HWID激活的编码票据数据
  3. 备用数据:用于不支持版本的备用激活路径
  4. 错误代码和消息:错误代码与人类可读消息的映射

最重要的关键数据结构位于 hwiddata 函数中,该函数包含

  • 激活ID
  • 产品密钥
  • SKU ID
  • 密钥部件号
  • 票据签名值
  • 兼容性标志
  • 版本信息

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd1966-2026 MAS/All-In-One-Version-KL/MAS_AIO.cmd2040-2066

异常处理

该脚本实现了一个健壮的错误处理系统,该系统

  1. 检测并报告操作期间的错误
  2. 根据错误类型提供具体的故障排除步骤
  3. 尝试自动修复常见问题
  4. 提供在线资源链接以解决复杂问题

发生错误时,脚本会

  • 捕获错误代码或条件
  • 如果可能,将其映射到已知问题
  • 显示彩色编码的错误消息
  • 建议具体的修复措施或变通方法
  • 在可能的情况下继续运行

来源:MAS/All-In-One-Version-KL/MAS_AIO.cmd1083-1098 MAS/All-In-One-Version-KL/MAS_AIO.cmd1929-1950

结论

Microsoft Activation Scripts的架构遵循模块化设计,以一个作为主界面的多合一脚本为中心。该脚本将多种激活方法与诊断和支持功能相结合,所有这些都可以通过通用的菜单系统进行访问。这种架构提供了灵活性和易用性,同时保持了全面的功能集。

该实现利用了多种Windows技术,包括

  • 命令行批处理脚本
  • PowerShell用于高级操作
  • WMI查询用于系统信息
  • 注册表操作用于配置
  • 通过PowerShell反射进行Windows API调用

这种架构允许脚本适应不同的Windows和Office版本,处理各种激活场景,并提供有用的诊断和故障排除功能。