lpksetup.exe与 语言包安装 和 本地化设置 相关,主要用于帮助用户添加或删除 Windows 操作系统的语言包。C:\Windows\System32\lpk.dll 一个动态链接库(DLL)文件,主要与系统的 语言包(Language Pack) 和 本地化功能(Localization) 相关

将语言添加到 Windows 映像 | Microsoft Learn

适用于 Windows 的可用语言包 | Microsoft Learn

语言和区域按需功能 (FOD) | Microsoft Learn

Windows 中的默认输入配置文件(输入区域设置) | Microsoft Learn

默认时区 | Microsoft Learn

适用于 Windows 的键盘标识符和输入法编辑器 | Microsoft Learn

 

lpk.dll 拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化流水线

文件路径:C:\Windows\System32\lpk.dll LPK = Language Pack Library,语言包底层业务逻辑库lpinstaller.exe 的核心业务实现全部托管在 lpk.dll,并非 exe 本体实现;同时供控制面板、PowerShell 语言模块调用。 注意:lpk.dlllpksetup.exe;lpksetup.exe 是 Win7 遗留外壳程序,内部同样加载 lpk.dll 做业务处理。

一、底层原理

  1. 定位:用户态 Win32 DLL,上层业务抽象层,不直接操作 CBS/TrustedInstaller,不直接读写 WinSxS;负责语言包业务校验、元数据解析、语言状态管理、LIP 父语言校验、注册表语言项组装,把业务请求转化为 CBS API 调用。
  2. 核心能力集:
    • 解析 LP / LIP cab 包内部元数据(mum 清单、LIP 专用 xml,提取 LCID、父语言 BaseLanguageID、系统版本要求)
    • LIP 强校验:读取 cab 元数据声明的父语言 ID,查询系统已安装语言集合,判断父语言是否存在;父语言缺失返回业务错误码。
    • 语言注册表读写封装:MUI 注册表路径HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MUI,封装语言注册、注销、BaseLanguage 写入 / 删除。
    • 语言枚举:查询本机已安装语言包,区分普通 LP、LIP(设置IsLanguageInterfacePack标记)。
    • 版本校验:读取 cab 内部版本元数据,比对当前 OS Build,过滤版本不匹配语言包。
  3. 分层架构:
    上层应用(lpinstaller.exe / intl.cpl / PowerShell) → lpk.dll(业务层) → cbsapi.dll(CBS接口层) → TrustedInstaller服务(CBS内核组件存储)

lpk.dll 只做业务逻辑;真正的 cab 解压、WinSxS 写入、组件安装全部交给 CBS。

二、依赖文件

文件 路径 作用
lpk.dll C:\Windows\System32\lpk.dll 语言包业务核心库
mui.dll System32 查询 MUI 语言配置、获取已安装语言 ID、回退链信息
cbsapi.dll System32 CBS 组件服务 API,提交安装 / 卸载组件请求
advapi32.dll System32 注册表读写,MUI 语言注册表项操作
cabinet.dll System32 CAB 压缩包解析,读取 cab 内部元数据、mum、xml
kernel32.dll System32 文件操作、版本获取、进程、错误处理
user32.dll System32 弹窗提示(lpinstaller 图形模式)

输入介质:lp.cab / lip.cab;输出对象:系统注册表、CBS 组件存储。

三、依赖关系 & 逻辑链路

硬性依赖

  1. 运行依赖 mui.dll:必须通过 mui.dll 获取系统现有语言集合,完成 LIP 父语言校验。
  2. 依赖 TrustedInstaller 服务正常运行:lpk.dll 本身不执行组件安装,调用 cbsapi.dll,由 TrustedInstaller 完成实际部署。
  3. 权限约束:调用方必须管理员权限;无管理员权限,lpk.dll 直接返回错误。
  4. 版本校验:lpk.dll 读取 cab 包内部版本元数据,和操作系统版本比对;版本不匹配直接阻断安装。

【安装链路】lpinstaller.exe 调用 lpk.dll 完整调用链

lpinstaller.exe /i xxx.lip.cab
        ↓
lpinstaller加载 lpk.dll,调用 LpkInstallLanguagePackage()导出函数
        ↓
lpk.dll 使用 cabinet.dll 解析cab包:读取mum组件清单、LIP元数据xml
        ↓
提取:目标语言LCID、BaseLanguage(父语言LCID)、最低OS版本
        ↓
调用 mui.dll 获取本机已安装语言列表
        ↓
【LIP关键校验】判断父语言LCID是否已经存在系统;不存在返回业务错误,终止流程
        ↓
校验cab包版本与当前系统Build是否匹配;版本不匹配返回错误
        ↓
组装CBS安装请求,调用 cbsapi.dll,把cab提交给TrustedInstaller服务
        ↓
TrustedInstaller执行实际安装:解压cab,写入WinSxS、部署*.mui资源
        ↓
CBS安装完成回调回到lpk.dll
        ↓
lpk.dll写入MUI注册表:注册语言,LIP写入BaseLanguage父语言ID、IsLanguageInterfacePack标记
        ↓
通知 mui.dll 刷新系统MUI语言回退链
        ↓
返回成功;lpinstaller输出完成

【卸载链路】lpinstaller.exe/u:{LCID}

lpinstaller.exe /u:0452
        ↓
lpk.dll LpkUninstallLanguagePackage()
        ↓
查询注册表,判断该语言是否为LIP;读取BaseLanguage
        ↓
业务校验:禁止直接卸载父语言(如果仍有LIP依赖该父语言,返回警告/错误)
        ↓
调用cbsapi.dll通知CBS卸载对应语言组件包
        ↓
CBS完成卸载,清理WinSxS、删除*.mui
        ↓
lpk.dll删除MUI注册表对应语言项
        ↓
通知mui.dll刷新语言链

⚠️ lpk.dll 内置业务校验:如果父语言还被其他 LIP 依赖,直接卸载父语言会返回错误,阻止破坏性操作。

四、配套链

上层调用者

调用方 说明
lpinstaller.exe Windows10/11 现代语言包安装主程序,绝大部分逻辑委托 lpk.dll
lpksetup.exe Win7 遗留程序,外壳,内部加载 lpk.dll,逐步弃用
intl.cpl 控制面板区域语言 旧版控制面板语言安装入口
PowerShell Get‑WinLanguage / Install‑WinLanguage PowerShell 语言模块底层调用 lpk.dll 导出接口

下层依赖组件

  1. mui.dll:MUI 运行时库,语言状态查询
  2. cbsapi.dll + TrustedInstaller:CBS 组件服务,实际安装卸载
  3. cabinet.dll:CAB 包解析

离线镜像说明

⚠️ lpk.dll 只用于在线运行系统;DISM 离线 WIM 镜像完全不调用 lpk.dll。 DISM 直接操作 CBS 离线会话,绕开 lpk.dll 业务层;所以离线注入 LIP 时,必须人工保证先注入父 LP,再注入 LIP,lpk.dll 的 LIP 父语言校验逻辑离线场景不会执行,顺序错误不会拦截,直接造成镜像损坏。

这是高频踩坑点:在线系统 lpk.dll 会拦截错误顺序;离线 DISM 没有 lpk.dll 业务校验,顺序错误直接生成损坏镜像。

五、边界(坑点、限制)

  1. 仅处理 CBS‑cab 格式语言包(LP / LIP cab),完全不支持 LXP (AppX/MSIX) LXP 本地体验包是 AppX 类型,不走 lpk.dll;lpk.dll 无法识别 appx 包。
  2. 在线 vs 离线行为差异(重点)
    • 在线系统:lpk.dll 做 LIP 父语言校验,父语言缺失直接拦截;
    • DISM 离线镜像:不加载 lpk.dll,无业务校验;顺序错误不会报错,镜像生成后部署才暴露故障。
  3. lpk.dll 只管业务层,不做实际文件写入 CBS 服务异常、TrustedInstaller 停止,lpk.dll 只会返回 CBS 层错误码,本身不能修复组件存储损坏。
  4. 只处理语言包本体,不处理 FOD 按需功能包(OCR、手写、TTS) FOD 属于另一套 Capability 体系,lpk.dll 完全不参与 FOD 安装卸载。
  5. 注册表只操作 MUI 语言注册项;不修改用户当前生效 UI 语言 安装语言包≠自动切换显示语言;切换 UI 语言由上层调用Set‑WinUILanguage,由 mui.dll 处理。
  6. 错误码区分:
    • lpk.dll 业务层错误:LIP 父语言缺失、版本不匹配;
    • CBS 底层错误:0x80073701 组件缺失,属于下层 cbsapi 返回,不是 lpk.dll 业务错误。
  7. 卸载保护边界:lpk.dll 检测父语言还存在依赖的 LIP,会阻止卸载父语言;但离线 DISM 没有该保护,可以直接破坏镜像。

六、自动化流水线(基于 lpk.dll 的在线语言包安装流水线)

lpk.dll 无独立 exe,通过 lpinstaller.exe/ PowerShell 调用其接口,仅适用于正在运行的 Windows 系统,不能用于 WIM 离线镜像。

流水线 1:在线系统静默安装 LIP(lpinstaller 调用 lpk.dll)

::执行安装,lpinstaller加载lpk.dll完成全部业务校验
lpinstaller.exe /i D:\lang\xxx.lip.cab /quiet /norestart

::查询已安装语言,内部调用lpk.dll枚举接口
powershell Get‑WinLanguage

流水线 2:卸载流水线(lpk.dll 内部做依赖校验)

::优先卸载LIP
lpinstaller.exe /u:{LIP‑LCID} /quiet
::lpk.dll校验确认没有LIP依赖之后,才允许卸载父语言
lpinstaller.exe /u:{Parent‑LP‑LCID} /quiet

流水线 3:故障检测流水线(PowerShell,底层调用 lpk.dll)

#枚举全部语言,识别LIP,查看BaseLanguage父语言
Get‑WinLanguage | Select‑Object Language,IsLanguageInterfacePack,BaseLanguage

流水线 4:故障场景

  1. 现象:在线安装 LIP 报错,提示缺少父语言 → lpk.dll 校验失败,父 LP 未安装;
  2. 现象:离线 DISM 生成镜像,部署后 LIP 回退英文 → 离线没有 lpk.dll 校验,注入顺序颠倒;
  3. 现象:TrustedInstaller 异常,lpinstaller 报 0x80073701 → CBS 组件存储损坏,不是 lpk.dll 问题。

核心总结: lpk.dll = 语言包业务校验层(保安);在线系统由它拦截非法操作;离线 DISM 直接绕开保安,需要人工遵守安装卸载顺序。


cbsapi.dll 拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化流水线

文件路径:C:\Windows\System32\cbsapi.dll CBS = Component‑Based Servicing 基于组件的服务模型。 cbsapi.dll用户态 CBS 客户端 API 库,是上层应用与 TrustedInstaller 服务之间的接口桥梁。 上层:lpk.dll、dismcore.dll、Windows 更新、设置应用;下层:RPC 调用TrustedInstaller系统服务 (tiworker.exe)。 职责:封装 CBS 组件安装、卸载、查询、验证 API;本身不执行组件解压、文件写入,全部委托给 TrustedInstaller 服务进程执行

一、底层原理

  1. 架构分层
上层业务层(lpk.dll / dismcore.dll / WU)
        ↓
cbsapi.dll 用户态API封装(RPC客户端)
        ↓
RPC / LRPC本地进程间通信
        ↓
TrustedInstaller 服务 tiworker.exe(高权限本地系统服务,真正执行CBS工作)
        ↓
CBS引擎:处理mum清单、数字签名校验、WinSxS组件存储、硬链接生成、servicing数据库维护
  1. cbsapi.dll 核心定位
  • 仅做RPC 客户端代理,不包含 CBS 业务引擎;所有真正组件处理逻辑运行在隔离服务进程tiworker.exe
  • 封装一整套导出 API:组件安装、移除、查询包信息、获取组件状态、扫描组件存储损坏。
  • 接收上层传入 cab 包路径、参数,序列化请求,通过 LRPC 发送给 TrustedInstaller;同步 / 异步等待服务端执行完成,返回结果、错误码、日志信息。
  • 支持两种会话模式: 1)在线会话:对正在运行的本机操作系统; 2)离线会话:DISM 场景,挂载 WIM 后的离线镜像,tiworker 可以操作离线蜂巢、离线 WinSxS。
  1. 关键数据对象
  • CBS_SESSION:会话句柄,区分在线 / 离线镜像会话。
  • 传入组件元数据:.cab路径、.mum组件清单、安全目录.cat签名校验。
  • 返回:HRESULT 错误码、组件执行状态、内部 CBS 日志引用。

重要区分:

  • lpk.dll:业务校验层(LIP 父语言校验、语言业务规则)
  • cbsapi.dll:CBS 接口代理层,不做业务规则校验,只转发请求给 TrustedInstaller
  • tiworker.exe:真正干活的执行引擎,解析 mum、校验签名、写入 WinSxS、生成硬链接。

离线镜像关键点:DISM 通过 cbsapi.dll 打开离线 CBS 会话;此时 lpk.dll 完全不参与,LIP 父语言校验逻辑不会执行,没有业务层保护。

二、依赖文件

文件 路径 作用
cbsapi.dll C:\Windows\System32\cbsapi.dll CBS 客户端 API,RPC 代理
tiworker.exe C:\Windows\Servicing\TrustedInstaller\tiworker.exe TrustedInstaller 服务进程,CBS 真正执行引擎
rpcrt4.dll System32 LRPC 本地远程调用,cbsapi 与 tiworker 通信底层
advapi32.dll System32 服务控制、安全权限、SID 处理
kernel32.dll System32 文件句柄、内存管理
cabinet.dll System32 辅助解析 cab 包元数据
srvcli.dll System32 服务控制管理器交互,启动 TrustedInstaller

系统存储侧(tiworker 操作,cbsapi 不直接读写)

路径 说明
C:\Windows\WinSxS 组件存储,tiworker 写入;cbsapi 不直接读写此目录
C:\Windows\Servicing\Packages\*.mum/*.cat 组件清单与签名目录
C:\Windows\Logs\CBS\CBS.log CBS 日志,tiworker 生成;cbsapi 仅传递日志句柄

三、依赖关系 & 逻辑链路

硬性依赖

  1. TrustedInstaller 服务必须可启动;服务被禁用 / 损坏,cbsapi 全部调用直接失败。
  2. 权限:在线会话,调用进程需要管理员权限;RPC 通信需要访问 TrustedInstaller 服务权限。
  3. 离线会话依赖 DISM 已经完成 WIM 挂载,挂载目录文件系统可读写。
  4. cbsapi.dll不做业务逻辑校验:不会校验 LIP 父语言、不会校验组件之间业务依赖;仅转发请求;依赖校验由 tiworker 内部的 CBS 引擎做组件依赖校验(基于 mum 清单)。

两个层级校验:

  1. 上层业务校验:lpk.dll(仅在线会话);
  2. CBS 底层组件依赖校验:tiworker 解析 mum,做组件依赖关系校验; ⚠️ tiworker 只校验组件清单声明的依赖不认识 LIP “父语言” 这种业务概念。LIP 父语言属于 MUI 业务规则,不在 mum 组件依赖定义中。 → 离线 DISM 注入 LIP,tiworker 不会检查父语言是否存在,允许错误顺序安装,镜像会埋下故障。

链路 1:在线系统 lpk.dll → cbsapi.dll → TrustedInstaller(LIP 安装)

lpinstaller.exe
        ↓
lpk.dll(业务校验:LIP父语言、版本校验)
        ↓
cbsapi.dll::CbsOpenSession(在线会话)
        ↓
cbsapi组装RPC请求,传递cab包路径
        ↓
LRPC rpcrt4.dll → TrustedInstaller tiworker.exe
        ↓
tiworker:解析mum、cat签名校验、解压cab、写入WinSxS、更新servicing数据库
        ↓
执行结果、错误码、日志回调回传给cbsapi.dll
        ↓
cbsapi返回结果给lpk.dll
        ↓
lpk.dll写入MUI注册表,完成语言注册

链路 2:DISM 离线镜像会话(无 lpk.dll 参与)

dism.exe → dismcore.dll
        ↓
cbsapi.dll::CbsOpenSession(离线会话,传入mount镜像路径)
        ↓
RPC调用 tiworker.exe,tiworker操作离线镜像的WinSxS、离线SOFTWARE蜂巢
        ↓
tiworker仅做mum组件依赖校验;**完全不知道LIP父语言业务规则**
        ↓
返回结果给cbsapi,再回传给dism

链路 3:查询组件状态

上层(dism / lpk.dll)调用 cbsapi.dll CbsEnumPackages
        ↓
RPC到tiworker,读取servicing数据库包状态
        ↓
返回已安装包列表、版本、安装状态

四、配套链

上层调用方

调用组件 场景说明
lpk.dll 在线语言包 LP/LIP 安装卸载
dismcore.dll DISM 工具,在线 / 离线镜像操作,WIM 镜像注入包
Windows Update(wuaueng.dll) Windows 更新安装系统组件、累积更新
设置应用、Windows 组件向导 系统可选组件安装卸载

下层依赖

  1. rpcrt4.dll:LRPC 通信
  2. TrustedInstaller 服务 tiworker.exe:真正执行 CBS 组件工作
  3. servicing 数据库、WinSxS 存储(tiworker 操作)

关键区分三张库分工总览

组件 层级 核心职责 是否参与离线 DISM
lpk.dll 业务层 语言业务规则:LIP 父语言校验、MUI 注册表组装 ❌离线镜像完全不加载
cbsapi.dll RPC 代理层 封装 CBS 会话,转发请求到 TrustedInstaller ✅参与离线会话
mui.dll MUI 运行时层 *.mui 资源加载、语言回退链(运行时) ❌镜像阶段不运行,部署后目标系统使用

离线镜像只有 cbsapi.dll + tiworker;lpk.dll、mui.dll 均不参与镜像构建阶段。

五、边界(坑点、限制)

  1. cbsapi.dll 没有业务逻辑 它只是 RPC 代理;LIP 父语言属于 MUI 业务规则,不在 CBS 组件 mum 依赖定义;离线场景没有 lpk.dll,tiworker 不会拦截 “先装 LIP 后装父 LP” 这种错误顺序。
  2. 在线与离线会话行为差异
  • 在线:lpk.dll 做业务校验,cbsapi 只转发;
  • 离线:只有 cbsapi+tiworker,业务校验全部丢失,需要脚本 / 人工保证顺序。
  1. 错误码分层
  • CBS 底层错误(组件缺失、版本不匹配):0x80073701,来自 tiworker,通过 cbsapi 透传给上层;
  • lpk.dll 业务错误(父语言缺失):发生在调用 cbsapi 之前,cbsapi 完全看不到该错误。
  1. cbsapi.dll 不直接读写 WinSxS 所有文件写入、硬链接生成、servicing 数据库更新全部由 tiworker 执行;cbsapi 仅传递参数、接收返回结果。
  2. 依赖 TrustedInstaller 服务状态 TrustedInstaller 被禁用、崩溃、卡死;cbsapi 调用会挂起或者返回超时错误。

现象:dism /add‑package 卡住,本质是 tiworker 卡死,不是 cbsapi.dll 故障。

  1. 离线会话限制 离线 CBS 会话不能处理 AppX/LXP;仅处理 CBS cab 组件包。LXP(msix/appx)不走 CBS、不走 cbsapi.dll。
  2. 日志机制 cbsapi 不生成 CBS.log;日志全部由 tiworker 输出;cbsapi 仅提供句柄供上层读取日志。

六、自动化流水线视角

cbsapi.dll 无独立可执行程序;由 DISM、lpinstaller、WindowsUpdate 间接调用。

流水线 1:在线系统安装 LIP 完整调用链路

  1. lpinstaller.exe /i xxx.lip.cab
  2. lpk.dll 做业务校验(父语言、版本)
  3. lpk 调用 cbsapi.dll 打开在线 CBS 会话,提交 cab 包
  4. cbsapi 通过 LRPC 将任务交给 tiworker
  5. tiworker 完成组件部署,返回结果
  6. lpk.dll 写入 MUI 注册表语言配置

流水线 2:DISM 离线 WIM 镜像注入语言包(无 lpk.dll)

  1. dism 挂载 wim 镜像
  2. dismcore 调用 cbsapi.dll 打开离线 CBS 会话,传入 mount 目录
  3. cbsapi RPC 调用 tiworker,操作离线镜像文件系统
  4. tiworker 解析 mum,执行组件注入;不校验 LIP 父语言业务依赖
  5. dism 获取 cbsapi 返回状态,记录 dism 日志
  6. dism unmount /commit,写回 WIM 镜像

⚠️风险点:脚本必须人工保证注入顺序:父 LP → LIP;没有 lpk.dll 做拦截。

流水线 3:故障排查定位

  1. DISM 报错 0x80073701:
    • 第一步区分:是 lpk.dll 业务报错,还是 tiworker 底层 CBS 报错;
    • 离线场景:一定是 tiworker 返回,检查:组件版本、LIP 父语言是否预先注入。
  2. DISM 执行卡住:TrustedInstaller tiworker 进程卡死,重启服务。
  3. CBS 存储损坏:执行 dism /online /cleanup‑image /restorehealth,底层同样调用 cbsapi,触发 tiworker 执行组件修复。

lpk.dll/mui.dll/cbsapi.dll/dism(dismcore.dll)四者分工总表

场景:Windows LP / LIP (cab) 语言包安装、卸载、运行时加载;区分在线运行系统离线 WIM 镜像行为差异。 层级从上到下:业务校验层 (lpk.dll) → 镜像工具层 (dism/dismcore) → CBS 代理层 (cbsapi.dll) → CBS 执行引擎 (tiworker.exe) → MUI 运行时 (mui.dll)

组件 文件路径 所属层级 核心职责 是否参与在线系统语言包安装 是否参与离线 WIM 镜像 关键业务校验能力 典型输入输出 典型报错来源
lpk.dll C:\Windows\System32\lpk.dll 语言业务规则层 语言包业务逻辑;解析 LP/LIP cab 元数据;LIP 父语言校验;MUI 注册表读写;区分 LP/LIP;版本比对;供 lpinstaller.exe、PowerShell 语言模块调用 ✅完整参与 完全不加载、不运行 ✅LIP 父语言校验、语言业务规则校验;会拦截非法安装顺序 输入:lp.cab/lip.cab;输出:MUI 注册表项,转发 CBS 请求 业务层报错:LIP 缺少父语言、版本不匹配
mui.dll C:\Windows\System32\mui.dll MUI 运行时层 .mui资源 DLL 加载;语言回退链引擎FindResourceExW;读取 MUI 注册表;提供 API 枚举已安装语言;只负责运行时资源查找,不参与安装卸载CSDN博... ✅系统运行全程参与;不参与安装流程 ❌镜像构建阶段不运行;部署后目标系统才加载 ❌无安装校验;只做资源查找回退 输入:UI 语言 ID;输出:本地化字符串资源 现象:界面回退父语言、部分界面英文;无 CBS 报错码
cbsapi.dll C:\Windows\System32\cbsapi.dll CBS RPC 代理层 CBS 客户端 API 封装;打开在线 / 离线 CBS 会话;LRPC RPC 转发请求到 TrustedInstaller (tiworker.exe);仅代理转发,不做业务逻辑,不直接读写 WinSxS ✅参与 ✅完整参与离线 CBS 会话 不识别 LIP 父语言业务规则;仅做 mum 组件清单内的组件依赖校验 输入:cab 包路径、CBS 会话句柄;输出:HRESULT 错误码,透传 tiworker 结果 底层 CBS 报错:0x80073701组件缺失、0x800fxxxx 系列
dism.exe + dismcore.dll C:\Windows\System32\dism.exedismcore.dll 镜像服务工具层 WIM 挂载 / 卸载;封装 DISM 命令行;打开在线 / 离线会话;调用 cbsapi.dll;处理 FOD 能力、镜像提交;无语言业务规则校验 ✅可在线操作 ✅镜像制作核心工具 ❌无 LIP 业务校验,完全依赖 cbsapi+tiworker 输入:install.wim、cab 包、Capability;输出:修改后的 wim 镜像、dism 日志 透传 cbsapi/tiworker 返回的全部错误码

关键补充说明(高频踩坑点)

  1. 在线系统完整调用链(lpinstaller 安装 LIP)lpinstaller.exelpk.dll(业务校验,拦截父语言缺失)cbsapi.dlltiworker.exe执行组件部署 → lpk.dll 写入 MUI 注册表 → mui.dll 运行时生效
  2. 离线 DISM 镜像注入 LIP 调用链(无 lpk.dll)dism.exedismcore.dllcbsapi.dll 打开离线 CBS 会话tiworker.exe解析 mum 执行注入;lpk.dll 完全缺席,LIP 父语言校验完全丢失,脚本必须人工保证顺序:父 LP→LIP

⚠️离线 tiworker 只校验 cab 内部 mum 声明的组件依赖;LIP 父语言属于 MUI 业务概念,不在 mum 组件依赖定义,不会被 CBS 拦截

  1. LXP (AppX/MSIX) 说明

lpk.dll、cbsapi.dll、DISM /Add‑Package 全部不处理 LXP;LXP 使用Add‑AppxProvisionedPackageAppX 栈,不走 CBS 语言包链路。

  1. 四张库的 “责任边界一句话总结”
  • lpk.dll:保安(业务规则校验,仅在线)
  • dism/dismcore:操作工(镜像挂载、命令入口)
  • cbsapi.dll:快递员(转发请求给 TrustedInstaller,不做业务判断)
  • mui.dll:翻译官(系统跑起来之后才干活,负责找 mui 资源、语言回退)

在线 vs 离线行为差异简表

场景 是否执行 LIP 父语言业务校验 执行校验的组件 风险点
在线系统 lpinstaller.exe 安装 LIP ✅执行 lpk.dll 父语言缺失直接报错,阻止安装
离线 DISM /Add‑Package 注入 LIP ❌不执行 无组件做业务校验 脚本顺序错误(LIP 先于父 LP),镜像无报错,部署后才出现界面回退父语言故障

MUI.dll + lpinstaller.exe 拆解 & LP / LIP / LXP 三者完整对比表

背景:

  • LP Language Pack:完整语言包;
  • LIP Language Interface Pack:传统语言界面包(Win7‑Win10 早期,cab 格式);
  • LXP Local Experience Pack:本地体验包,LIP 的现代继任者,.appx/msix,商店分发;Windows11 仅 5 种 LIP 保留 cab 用于离线镜像,其余全部为 LXP (AppX)Microsoft ...。

一、MUI.dll 拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|流水线

mui.dllC:\Windows\System32\mui.dllWindows MUI 多用户界面运行时核心,系统加载.mui资源 DLL、语言回退链全部由该组件完成Microsoft ...。

底层原理

  1. 资源分离架构:EXE/DLL 中性二进制代码与 UI 字符串资源分离;资源存放于System32\<LCID>\*.mui
  2. 语言回退链引擎:当请求某语言资源,找不到对应 mui 文件,自动沿语言链向下回退:当前UI语言 → 父语言(LIP/LXP) → 系统后备语言
  3. 校验机制:使用资源校验和,保证中性二进制本体与对应.mui资源版本严格匹配;版本不匹配拒绝加载 mui,直接回退后备语言。
  4. 对外导出 Win32 API:FindResourceExWLoadStringWGetUserDefaultUILanguageGetInstalledUILanguages,供应用、系统组件调用。
  5. 读取注册表 MUI 配置:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MUI,读取 LIP 的BaseLanguage父语言 ID。

依赖文件

文件 路径 作用
mui.dll System32 MUI 核心运行时
muiui.dll System32 MUI 辅助 UI 库
advapi32.dll System32 注册表读写
kernel32.dll System32 文件、模块加载
*.mui System32\<LCID>\ 语言资源 DLL

依赖关系 & 逻辑链路

应用程序调用 FindResourceEx / LoadStringW
        ↓
mui.dll 接收语言ID参数
        ↓
查询注册表MUI语言配置,构建语言回退链(LIP场景包含父语言)
        ↓
按优先级顺序查找对应目录下的 *.mui
        ↓
校验mui内部资源校验和,匹配主二进制版本
        ↓
✅匹配成功,返回本地化字符串;❌失败,执行回退链下一级

关键:MUI.dll 不负责安装语言包,只负责运行时资源查找加载;安装工作交给 lpinstaller/DISM/CBS。

配套链

  1. 上层调用方:Win32 应用、系统组件、控制面板intl.cpl、设置应用。
  2. 安装配套:lpinstaller.exe、DISM、CBS/TrustedInstaller(负责部署 mui 资源到磁盘、写入注册表)。
  3. PowerShell:Get‑WinLanguage内部调用 MUI API 获取语言列表,识别 LIP 标记IsLanguageInterfacePack

边界(坑点)

  1. 校验和强绑定:.mui 资源版本必须与系统二进制版本严格匹配;版本不匹配直接回退父语言,不会报错弹窗
  2. LIP/LXP 场景:注册表父语言 ID 被删除 / 损坏,MUI 回退链断裂,大量界面显示乱码 / 英文。
  3. 只处理 UI 字符串资源;OCR、TTS、手写功能不归 mui.dll 管理,属于 FOD 按需功能
  4. 用户 UI 语言与系统区域格式(日期、货币)两套独立配置,mui.dll 只管 UI 显示语言。

流水线(运行时流水线,无安装逻辑)

  1. 用户切换显示语言;写入注册表 MUI 配置。
  2. 新进程启动,mui.dll 读取回退链。
  3. 进程加载资源,逐层查找 mui 资源。
  4. 资源命中或回退兜底,输出界面文本。

二、lpinstaller.exe 拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|流水线

路径:C:\Windows\System32\lpinstaller.exe;Windows10/11 现代语言包安装工具,替代旧版lpksetup.exe;负责本地在线安装 LP 完整语言包、LIP (cab);离线镜像不调用 lpinstaller,离线使用 DISM博客园。

底层原理

  1. 作为 CBS 客户端,解析.cab语言包内部*.mum组件清单、数字签名、LIP 元数据 XML。
  2. LIP 安装前置校验:读取 cab 内部元数据,校验系统是否已经安装指定父语言包;父语言缺失直接报错终止安装。
  3. 调用 TrustedInstaller 服务(CBS 组件服务)完成 cab 包部署;将 mui 资源部署到System32\<LCID>、写入 WinSxS 组件存储。
  4. 写入 MUI 注册表项,注册语言;LIP 额外写入BaseLanguage父语言 ID。
  5. 静默参数:/i安装 cab;/u:{LCID}按语言 LCID 卸载;/quiet静默无 UI。

依赖文件

文件 路径 作用
lpinstaller.exe System32 语言包安装主程序
lpk.dll System32 语言包底层辅助库
mui.dll System32 查询系统已安装语言、校验语言状态
cbsapi.dll System32 CBS 组件服务 API 接口
advapi32.dll System32 注册表操作

依赖关系 & 调用链路

lpinstaller.exe /i xxx.cab
        ↓
解析cab包 mum清单 + LIP元数据
        ↓
mui.dll查询系统已安装语言,校验LIP父语言是否存在
        ↓
cbsapi.dll调用TrustedInstaller(CBS)服务
        ↓
TrustedInstaller解压cab,部署mui资源,写入WinSxS
        ↓
写入MUI注册表,注册语言包;LIP写入BaseLanguage
        ↓
通知mui.dll刷新语言配置;完成安装

卸载链路:lpinstaller.exe /u:{LCID}LIP 场景必须先卸载 LIP,再卸载父语言包

配套链

  1. 用户 UI:设置‑时间和语言‑语言和区域(内部调用 lpinstaller)。
  2. 命令行:支持静默脚本部署;离线 WIM 镜像不要调用 lpinstaller,离线使用 DISM /Add‑Package
  3. 遗留工具:lpksetup.exe(Win7 时代,Win11 保留做兼容,不再推荐)。

边界(坑点)

  1. 仅处理 cab 格式语言包;不能安装 LXP(.appx/msix);LXP 使用Add‑AppxProvisionedPackage/Microsoft Store。
  2. 需要管理员权限;依赖 TrustedInstaller 服务正常运行。
  3. 版本强校验:cab 包 Build 版本必须与当前系统 Build 完全一致,版本不匹配 CBS 报错 0x80073701。
  4. 不处理 FOD 按需功能包;FOD 需要另外通过设置或者 DISM /Add‑Capability安装。

自动化流水线(在线系统安装 LIP/LP)

::安装
lpinstaller.exe /i D:\lang\xxx.lip.cab /quiet /norestart
::卸载(LIP场景顺序:先LIP,后父语言)
lpinstaller.exe /u:0452 /quiet
lpinstaller.exe /u:0409 /quiet

三、LP 完整语言包 / LIP 传统语言界面包 / LXP 本地体验包 完整对比总表

Windows11 重要变化:只有 5 种 LIP 保留 cab 格式支持离线镜像;其余小众 LIP 全部改为 LXP‑AppX,无法 DISM 离线预注入 WIM 镜像,只能部署后商店 / 设置安装博客园。

对比维度 LP(完整语言包 Language Pack) LIP(传统语言界面包,旧版) LXP(Local Experience Pack 本地体验包,现代 LIP 继任)
文件格式 .cab .cab(Win7‑Win10;Win11 仅 5 种保留 cab) .appx / msixbundle
是否可做系统主显示语言 ✅可以独立做主语言 ❌不能独立,强依赖父 LP ❌不能独立,强依赖父 LP
翻译覆盖度 完整 UI 翻译;包含全套 mui 资源 仅常用 UI 部分翻译;缺失资源回退父语言 仅常用 UI 部分翻译;缺失资源回退父语言
是否自带 OCR / 手写 / TTS ✅可配套 FOD 完整能力 ❌无;FOD 需要另外安装 ❌无;FOD 需要另外安装
父语言依赖 无,独立完整包 强制依赖指定父 LP 语言包 强制依赖指定父 LP 语言包
离线 WIM 镜像部署 ✅DISM /Add‑Package 直接注入 ✅Win11 仅 5 种 cab LIP 支持 DISM 注入;其余不可 ❌不能 DISM 离线注入 WIM;只能部署后安装,镜像内可以预配置 AppX 预置
分发渠道 语言和可选功能 ISO 语言和可选功能 ISO(有限语种) Microsoft Store、商业离线 AppX 包
安装工具 DISM / lpinstaller.exe DISM / lpinstaller.exe 设置、Microsoft Store、PowerShell Add‑AppxProvisionedPackage
体积 大,几百 MB 小,几十 MB 小,几十 MB 级别
注册表标记 IsLanguageInterfacePack=False IsLanguageInterfacePack=True;存在BaseLanguage IsLanguageInterfacePack=True;存在BaseLanguage
卸载顺序 无前置依赖 先卸载 LIP,再卸载父 LP 先卸载 LXP,再卸载父 LP
典型语种 中文、英文、德文、法文、西班牙语等主流语言 巴斯克语、威尔士语、库尔德语等小众语种 绝大多数小众语种,Win11 主流 LIP 实现形态
Windows11 状态 全部保留 cab 格式,支持 OEM 镜像预部署 仅 5 个语种保留 cab,其余废弃 绝大多数小众语言使用 LXP (AppX);镜像阶段不可离线注入

关键业务规则总结

  1. 做企业 OEM Windows11 镜像:主流语言用LP(cab);5 个允许离线的 LIP 直接用 cab;其余小众语言只能部署后用户从商店获取 LXP。
  2. LIP/LXP 安装顺序:父 LP 语言包优先安装,之后再安装 LIP/LXP;卸载完全反向。
  3. MUI.dll 只负责运行时资源加载;语言包安装由 CBS、lpinstaller、DISM 负责。
  4. LXP 是 AppX,不属于 CBS 组件;不能用 DISM /Add‑Package,要用 PowerShell AppX 接口。

语言界面包 LIP(Language Interface Pack)拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化流水线

LIP:Windows 语言界面包,仅翻译用户界面资源,不是完整语言包;只翻译菜单、对话框、设置;系统核心二进制、帮助文档、OCR、语音识别不做本地化。 区别:

  • LP(完整语言包 Language Pack):lp.cab,全部 UI + 语音 / OCR / 手写 / 帮助;体积大。
  • LIP 语言界面包lip.cab,仅 UI 字符串资源,依赖一套基础父语言,不能单独作为系统主语言。 典型场景:Windows 家庭版、部分地区小众语言(库尔德语、巴斯克语、威尔士语等),只能使用 LIP,不提供完整 LP 包。

一、底层原理

1. 核心机制

Windows MUI(多用户界面)架构基础,系统采用资源分离架构

  1. 系统 EXE/DLL 本体存中性二进制代码;UI 字符串、对话框、菜单资源剥离到独立*.mui资源 DLL。
  2. 完整语言包 LP:提供全套 mui 资源 + 输入法、语音、OCR、区域设置。
  3. LIP 语言界面包只提供一部分 mui 资源文件,没有完整本地化组件;缺失的资源直接回退到它的「父基础语言」。

例:威尔士语 LIP,父语言是英语 (GB);系统找不到威尔士翻译的资源,自动加载英文 GB 的 mui 资源做兜底。 ✅LIP 不能独立安装,必须系统预先存在它声明的父语言

2. LIP 安装逻辑底层

  1. LIP 本质是特殊 CAB 包,内部包含:
    • 部分*.mui本地化资源 DLL
    • LIP 元数据 xml,定义此 LIP 对应的父语言 ID (Language base)
    • 区域设置、注册表注册项
  2. 安装阶段:把 mui 资源部署到%SystemRoot%\System32\<LCID>\目录;写入注册表声明语言包、声明父语言。
  3. 运行时:Win32 API LoadLibraryEx / FindResourceEx 根据当前 UI 语言,优先加载 LIP 的 mui;资源缺失自动回退父语言 mui。
  4. GetUserDefaultUILanguage() 返回 LIP 语言 ID;底层 MUI 管理器维护语言回退链:LIP语言 → 父语言 → 系统默认后备语言

关键:LIP不替换系统主二进制文件,只替换配套 mui 资源文件。

二、依赖文件

文件 路径 作用
*.lip.cab 分发介质 LIP 安装源 CAB 压缩包,LIP 本体
lpinstaller.exe C:\Windows\System32\lpinstaller.exe 语言包安装器,处理 LP/LIP cab 安装、卸载
mui.dll C:\Windows\System32\mui.dll MUI 多语言核心,管理 mui 资源查找、语言回退链
muiui.dll C:\Windows\System32\muiui.dll MUI 用户界面辅助
advapi32.dll System32 处理语言相关注册表读写
System32\<LCID>\*.mui C:\Windows\System32\0452\(示例威尔士 LCID) LIP 部署输出:语言对应 mui 资源文件
mui.mum 内嵌在 lip.cab CBS 组件清单,供 Windows 组件存储 (CBS) 解析
*.xml LIP元数据 cab 内部 定义 LIP 的父语言 ID、支持版本、语言属性

系统组件存储 C:\Windows\WinSxS:LIP 安装后对应的 mui 组件会被 CBS 存入 WinSxS。

三、依赖关系 & 逻辑链路

硬性依赖

  1. 父语言依赖(最核心) LIP 安装前,操作系统必须已经安装 LIP 指定的父语言包;否则 lpinstaller 直接拒绝安装。

示例:库尔德语 LIP 父语言是土耳其语;系统没有土耳其语言包,LIP 安装直接失败。

  1. OS 版本依赖:LIP 版本必须和系统版本、Build 严格匹配;跨版本 LIP 无法安装。
  2. CBS 组件存储正常,TrustedInstaller服务运行;LIP 属于系统组件,需要 TrustedInstaller 权限部署。

LIP 安装调用链路

lpinstaller.exe 输入 lip.cab
        ↓
解析cab内部 mui.mum 组件清单 + LIP元数据xml
        ↓
校验:检查系统是否存在【父语言】,系统版本匹配校验
        ↓
调用CBS(Component Based Servicing)(TrustedInstaller)
        ↓
提取 *.mui 资源部署到 %SystemRoot%\System32\<LCID>\
        ↓
写入注册表:注册语言、声明LIP以及其父语言ID
        ↓
MUI(mui.dll)刷新语言回退链
        ↓
完成;用户可在语言设置切换为LIP语言

运行时资源加载链路

应用程序/系统组件调用 FindResourceEx / LoadStringA(W)
        ↓
mui.dll MUI管理器
        ↓
优先查找 当前LIP语言ID 的 *.mui
        ↓
✅找到 → 返回LIP翻译字符串
❌缺失 → 自动回退加载【父语言】的mui资源
        ↓
父语言也缺失 → 回退系统默认后备语言

注册表关键位置

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MUI\Languages
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MUI
# LIP专属标记:记录 BaseLanguage(父语言LCID)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MUI\LanguagePackages\<LIP-LCID>

四、配套链

系统内置配套组件

组件 用途
lpinstaller.exe 语言包安装卸载,支持 LP 完整包、LIP 界面包
mui.dll MUI 资源加载、语言回退链管理(LIP 核心运行时)
CBS / TrustedInstaller 处理 cab 组件安装,写入 WinSxS
intl.cpl 区域和语言控制面板,UI 切换 LIP 语言
Settings > Time & language > Language 现代设置页面,Win10/11 管理 LIP 语言

部署工具配套

  1. DISM.exe:离线镜像注入 LIP;dism /add‑package 把 lip.cab 注入 wim 离线镜像。
  2. Get‑WinLanguage PowerShell:查询系统已安装语言,区分 LIP 与完整 LP。
  3. lpksetup.exe:旧版语言包安装程序(Win7 时代,新版逐步迁移到 lpinstaller)。

区分 LP 完整语言包 vs LIP 语言界面包

项目 LP 完整语言包 LIP 语言界面包
文件后缀 lp.cab lip.cab
是否可作为主语言 ✅可以独立主语言 ❌必须依赖父语言,不能独立
内容 全部 mui、输入法、OCR、TTS 语音、手写 仅部分 UI mui 资源;无语音 / OCR
体积 大,几百 MB~1GB 小,几十 MB 级别
支持版本 企业版 / 专业版;家庭版部分限制 家庭版、专业版均可;小众语言仅提供 LIP

五、边界(限制、坑点)

  1. 父语言强制依赖边界 没有预安装父语言,LIP 直接安装失败;LIP 不能脱离父语言独立工作。卸载父语言,LIP 会直接失效。
  2. 功能缺失边界 LIP只有界面翻译
  • 系统设置、菜单、对话框会翻译;
  • 控制台消息、错误提示、语音 TTS、OCR 识别、手写输入、帮助文档仍然是父语言。
  1. 版本强绑定边界 LIP 的 cab 必须严格匹配 Windows Build 版本;Win10 22H2 的 LIP 不能直接安装到 Win11。离线部署 WIM 镜像时,LIP 版本必须与镜像 OS 版本完全对齐。
  2. 版本 SKU 边界 Win 家庭版:很多完整 LP 包不可安装,但允许安装 LIP;

注意:LIP 本身不改变系统 SKU 策略。

  1. 卸载边界 卸载顺序约束:先卸载 LIP,再卸载父语言包;如果直接删除父语言,LIP 注册表残留,系统 MUI 语言链损坏,出现乱码、资源加载异常。
  2. 镜像部署边界 离线 DISM 注入 LIP 的时候,必须先注入父语言 lp.cab,之后再注入 lip.cab;顺序颠倒会部署失败。
  3. API 边界GetInstalledUILanguages可以区分 LIP 和完整 LP;LIP 会标记IsLanguageInterfacePack=TRUE
  4. 用户配置边界 LIP 只作用于用户界面语言;不改变区域格式、日期货币格式,区域格式需要另外单独设置。

六、自动化流水线

流水线 1:离线 WIM 镜像部署流水线(最常用企业部署)

目标:离线给 Windows 镜像预装 LIP 语言界面包

  1. DISM 挂载 wim 镜像
  2. 注入【父语言 lp.cab】(必须优先执行)
  3. 注入目标 xxx.lip.cab
dism /mount‑image /imagefile:install.wim /index:1 /mountdir:D:\mount
dism /image:D:\mount /add‑package /packagepath:.\parent_lp.cab
dism /image:D:\mount /add‑package /packagepath:.\xxx.lip.cab
dism /image:D:\mount /set‑uilanguage:xx‑XX
dism /unmount‑image /mountdir:D:\mount /commit
  1. 提交镜像,输出成品 wim,用于 OS 部署。

流水线 2:在线运行系统安装 LIP(PowerShell)

# 校验是否存在父语言
Get‑WinLanguage
# 使用lpinstaller静默安装lip.cab
lpinstaller.exe /i .\xxx.lip.cab /quiet /norestart
# 安装完成后设置用户UI语言
Set‑WinUILanguage -Language xx‑XX

流水线 3:巡检流水线(检测系统是否安装 LIP,输出父语言信息)

Get‑WinLanguage | Select‑Object Language,IsLanguageInterfacePack,BaseLanguage

输出字段 IsLanguageInterfacePack=True 代表该语言为 LIP 语言界面包,同时输出依赖的父语言。

流水线 4:卸载流水线(严格顺序)

  1. 先卸载 LIP 包
  2. 确认 LIP 移除完毕,再卸载父语言包
lpinstaller.exe /u:{LIP‑LCID} /quiet
lpinstaller.exe /u:{Parent‑LCID} /quiet

⚠️禁止直接卸载父语言,会造成 MUI 损坏。

流水线 5:故障修复流水线

  1. 现象:切换 LIP 语言后部分界面变回英文(父语言)
  2. 确认:该组件没有 LIP 翻译资源,属于 LIP 本身设计,非故障;
  3. 现象:大量乱码、资源加载失败:检查父语言是否被误卸载,重新安装父语言包。

将语言添加到 Windows 映像(DISM 离线集成 LP / LIP (LXP) / FOD)拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化流水线

来源:微软 Learn《Add‑language‑packs‑to‑windows》,面向 WIM 离线镜像预装语言;区分完整语言包 LP、LIP 本地体验包 (LXP)、FOD 按需语言功能包 (Basic/OCR/ 手写 / 语音 / TTS)Microsoft ...。 关键规则:

  1. LIP(LXP)必须预先部署其依赖的父完整语言包 LP
  2. 卸载语言组件必须与安装顺序反向卸载
  3. 需要「语言和可选功能 ISO」作为 FOD 介质源,不可直接零散拷贝 cab 作为源仓库Microsoft ...。

一、底层原理

  1. CBS 基于组件服务模型(Component‑Based Servicing) WIM 镜像挂载之后,DISM 对离线映像执行组件注入;所有语言资源(mui、注册表、字体、输入法)均为 CBS 组件包(.cab),包含mum组件清单、cat签名证书、资源文件。组件写入镜像内的WinSxS组件存储,通过硬链接映射到System32\<LCID>\*.mui运行时目录博客园。
  2. 三类语言组件定义
  • LP 完整语言包 Language‑Pack.cab:完整 MUI 界面资源,可独立做显示语言;包含大量*.mui多语言资源 DLL。
  • LIP (LXP,Local‑Experience‑Pack) 本地体验包:仅部分 UI 翻译;强依赖父语言 LP,缺失资源自动回退父语言;不能单独作为主显示语言。
  • FOD Features‑on‑Demand 按需语言功能包:Basic 基础语言、OCR、手写 Handwriting、语音 Speech、文本转语音 TTS、字体 Fonts;属于附属能力,不提供 UI 界面翻译,依赖对应 LP/LIP 语言 ID。
  1. 离线镜像处理流程原理 1)挂载 WIM,得到可读写离线文件系统; 2)DISM 解析 cab 包的 mum 清单,校验数字签名; 3)CBS 引擎将组件资源导入镜像内 WinSxS 组件存储;写入注册表 MUI 语言配置项; 4)FODv2 带附属包组件,不能直接 add‑package,必须使用/Add‑Capability,读取 FOD ISO 元数据仓库自动拉取附属 cabMicrosoft ...; 5)提交卸载镜像,输出修改后的 install.wim;部署此镜像的新机器开机后,设置中直接出现已预装语言,用户可切换显示语言。
  2. 运行时 MUI 回退链(镜像部署完成后)
当前选中语言 →(LIP场景)父语言包 → 系统后备语言

mui.dll运行时按照该链条依次查找.mui资源 DLL。

二、依赖文件

1. 工具侧(执行 DISM 的工作站)

文件 路径 作用
dism.exe System32\dism.exe 部署映像服务和管理主程序
dismcore.dll System32\dismcore.dll DISM 底层核心引擎,离线镜像会话、CBS 交互
dismapi.dll System32\dismapi.dll DISM 上层 API
wimapi.dll System32\wimapi.dll WIM 镜像挂载 / 提交底层库

2. 语言介质文件(来自【语言和可选功能 ISO】)

文件 说明
Microsoft‑Windows‑Client‑Language‑Pack_xxx.cab LP 完整语言包,mum+cat+mui 资源
Microsoft‑Windows‑LIP‑Package_xxx.cab LIP (LXP) 本地体验包,必须依赖父 LP
FOD 系列 cab:LanguageFeatures‑Basic‑xx‑XX.cab 按需语言功能包(Basic/OCR/Handwriting/Speech/TTS)
仓库元数据文件 FOD ISO 内部元数据库;/Add‑Capability依赖,不能直接删除

3. 离线镜像内部(挂载后的 C:\mount\windows)

镜像内路径 作用
Windows\WinSxS\ 组件存储,存放 LP/LIP/FOD 全部语言组件实体文件
Windows\servicing\Packages\*.mum / *.cat CBS 组件清单与数字签名,记录已安装语言包
Windows\System32\<LCID>\*.mui 多语言资源 DLL(硬链接指向 WinSxS)
Windows\System32\mui.dll MUI 运行时库,镜像部署后目标系统运行时使用
注册表蜂巢 mount\windows\Windows\System32\config\SOFTWARE MUI 语言注册表项:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MUI,记录语言、LIP 父语言 ID

三、依赖关系

✅硬性依赖

  1. 版本严格匹配:语言包 / LIP/FOD 的 build 版本号,必须和 WIM 镜像操作系统 Build 完全一致;版本不匹配直接 CBS 报错 0x80073701 组件缺失。
  2. LIP 强依赖父语言包 LP注入 LIP 之前,必须先注入它对应的父完整 LP 语言包;顺序颠倒,CBS 校验直接失败。
  3. FOD 带附属包依赖 FOD 仓库源:执行/Add‑Capability必须指定/Source指向语言和可选功能 ISO 根目录;不能手动零散拷贝 cab 文件当作源仓库,缺少元数据会失败Microsoft ...。
  4. 权限:执行 DISM 挂载 / 添加包,工作站必须管理员权限
  5. WIM 镜像必须可读写:WIM 不能是只读;挂载目录需要足够磁盘空间存放解压组件。

安装顺序约束(关键)

正确安装顺序

  1. 注入父完整语言 LP(LIP 场景)
  2. 注入 LIP (LXP) 本地体验包(如果需要)
  3. 使用/Add‑Capability注入对应语言的 FOD 按需功能(Basic / OCR / 手写 / 语音 / TTS)

卸载顺序:完全反向:先卸载 FOD → 卸载 LIP → 最后卸载父 LP 语言包;顺序错误造成 MUI 注册表损坏、系统乱码Microsoft ...。

调用链路(离线镜像添加语言)

dism.exe (工作站管理员执行)
        ↓
dismcore.dll → wimapi.dll 挂载install.wim到本地mount目录
        ↓
DISM打开离线CBS会话(操作镜像内SOFTWARE蜂巢、WinSxS、Packages)
        ↓
解析cab包mum组件清单,校验cat数字签名
        ↓
【FOD场景】/Add‑Capability读取FOD‑ISO仓库元数据,自动拉取附属cab组件
        ↓
将语言资源导入镜像WinSxS组件存储,写入servicing\Packages清单
        ↓
写入镜像SOFTWARE注册表MUI语言配置(记录LP/LIP、BaseLanguage父语言ID)
        ↓
全部组件处理完成,dism /unmount‑image /commit,写回install.wim镜像

区分:离线镜像只是预安装组件不会设置默认显示语言;默认 UI 语言需要部署后 OOBE 阶段或者再次 DISM /set‑uilanguage设置。

四、配套链

🔹核心命令行工具配套

命令 用途
dism /Mount‑Image 挂载 wim 镜像到本地目录
dism /Add‑Package 注入 LP、LIP 非附属 FOD cab 组件包
dism /Add‑Capability /Source:F:\LanguagesAndOptionalFeatures 注入带附属包的 FOD 语言功能(推荐)
dism /Get‑Packages /Image:D:\mount\windows 列出镜像内已经安装的语言 CBS 包,校验是否成功安装
dism /Get‑Capabilities /Image:D:\mount\windows 查看镜像内 FOD 功能状态
dism /Set‑UILanguage:xx‑XX /Image:D:\mount\windows 设置镜像默认 UI 语言(离线)
dism /Remove‑Package 卸载语言组件(严格反向顺序)
dism /Unmount‑Image /commit 提交变更,卸载镜像

介质配套

  1. 语言和可选功能 ISO (Languages And Optional Features ISO):微软官方介质,对应操作系统 Build 版本;提供 LP/LIP/FOD 完整 cab + 仓库元数据,离线环境必备,不能用 Windows Update 替代。
  2. WIM 镜像源(install.wim)。

上下游配套

  1. 上游:OEM / 企业镜像制作流水线;ADK Windows 评估和部署工具包。
  2. 镜像内下游:MUI 运行时mui.dll;部署完成后,OOBE、设置 > 时间和语言读取 MUI 注册表展示已安装语言。
  3. 部署后:目标机器运行时,可在设置界面增加 / 删除语言,也可在线 Windows Update 下载 FOD。

五、边界(限制与坑点)

  1. LIP 父语言依赖边界 LIP (LXP) 本身不具备完整翻译资源;镜像中没有预先安装父 LP,添加 LIP 直接失败;卸载时必须先删 LIP,再删父 LP,反向顺序会造成 MUI 配置损坏,系统界面乱码。
  2. 版本强绑定边界 LP/LIP/FOD 的 Build 必须与 WIM 镜像 Build 严格一致;高版本语言包不能注入低版本镜像,反之亦然。
  3. FOD 仓库边界 带附属包 FOD,不能直接手动 add‑package 单个 cab;必须使用/Add‑Capability,并且指定完整 FOD ISO 源目录;手动拷贝 cab 文件夹无法充当仓库,缺少元数据,报错组件找不到Microsoft ...。
  4. 离线镜像仅预安装组件,不等于设置默认语言 Add‑Package 只是把语言资源预装到镜像,不会自动设置为 Windows 显示语言;如需默认语言,需要额外执行/set‑uilanguage离线命令,或部署后用户在设置切换语言。
  5. 镜像大小边界 每增加一套完整 LP+FOD,镜像体积显著增大;非英语区域可反向按反向卸载顺序移除不需要的英语语言组件,缩减镜像体积。
  6. SKU 许可边界 部分 Windows SKU(单语言版),即便镜像预装多语言包,部署后许可限制依然只允许一套显示语言,设置界面其他语言不可切换。
  7. 卸载顺序边界

安装顺序:LP 父语言 → LIP → FOD 卸载顺序:FOD → LIP → LP 父语言 颠倒顺序会导致 CBS 数据库残留无效元数据,镜像损坏。

  1. WIM 挂载磁盘空间边界 挂载目录磁盘需要预留足够空间;所有语言组件解压导入 WinSxS 会占用大量临时磁盘。

六、逻辑链路两条典型链路

链路 A:离线镜像添加完整语言包 LP + FOD(无 LIP)

  1. dism 挂载 install.wim 到本地 mount 目录。
  2. /Add‑Package注入完整 LP 语言包 cab。
  3. /Add‑Capability,指定 FOD‑ISO 源,注入 Basic/OCR/ 手写 / 语音 / TTS FOD 功能。
  4. 可选:/set‑uilanguage设置离线镜像默认 UI 语言。
  5. Get‑Packages / Get‑Capabilities 校验组件全部成功安装,无错误。
  6. Unmount‑image commit,写回 install.wim 镜像。

链路 B:离线镜像添加 LIP (LXP) 本地体验包(带父语言依赖)

  1. dism 挂载 wim。
  2. 先注入 LIP 对应的父完整 LP 语言包
  3. /Add‑Package注入 LIP (LXP) cab 包。
  4. /Add‑Capability注入该语言对应的 FOD 按需功能。
  5. 校验镜像内 MUI 注册表,确认 LIP 的BaseLanguage父语言 ID 正确写入。
  6. 提交卸载镜像。

七、自动化流水线(企业 OEM 镜像制作流水线)

流水线 1:向 WIM 镜像离线添加语言(LP + LIP + FOD)批处理模板

@echo off
set MOUNTDIR=C:\mount\windows
set IMGFILE=install.wim
set FOD_SOURCE=F:\LanguagesAndOptionalFeatures

::1.挂载镜像
md %MOUNTDIR%
dism /Mount‑Image /ImageFile:%IMGFILE% /Index:1 /MountDir:%MOUNTDIR%

::2.注入父语言LP(LIP场景必须优先)
dism /Image:%MOUNTDIR% /Add‑Package /PackagePath:%FOD_SOURCE%\Microsoft‑Windows‑Client‑Language‑Pack_x64_xx‑XX.cab

::3.注入LIP(LXP)(可选,如果需要LIP)
dism /Image:%MOUNTDIR% /Add‑Package /PackagePath:%FOD_SOURCE%\Microsoft‑Windows‑LIP‑Package_x64_yy‑YY.cab

::4.注入FOD按需语言功能,指定FOD ISO源
dism /Image:%MOUNTDIR% /Add‑Capability ^
/CapabilityName:Language.Basic~~~xx‑XX~0.0.1.0 ^
/CapabilityName:Language.OCR~~~xx‑XX~0.0.1.0 ^
/CapabilityName:Language.Handwriting~~~xx‑XX~0.0.1.0 ^
/CapabilityName:Language.Speech~~~xx‑XX~0.0.1.0 ^
/CapabilityName:Language.TextToSpeech~~~xx‑XX~0.0.1.0 ^
/Source:%FOD_SOURCE%

::5.(可选)设置镜像默认UI语言
dism /Image:%MOUNTDIR% /Set‑UILanguage:xx‑XX

::6.校验已安装包
dism /Image:%MOUNTDIR% /Get‑Packages
dism /Image:%MOUNTDIR% /Get‑Capabilities

::7.提交保存镜像
dism /Unmount‑Image /MountDir:%MOUNTDIR% /Commit

流水线 2:移除语言组件(严格反向卸载顺序)

::1.卸载FOD语言功能
dism /Image:%MOUNTDIR% /Remove‑Capability /CapabilityName:xxx
::2.卸载LIP(LXP)
dism /Image:%MOUNTDIR% /Remove‑Package /PackageName:LIP包完整名称
::3.最后卸载父LP语言包
dism /Image:%MOUNTDIR% /Remove‑Package /PackageName:LP完整包名称
::提交镜像
dism /Unmount‑Image /MountDir:%MOUNTDIR% /Commit

流水线 3:CI 自动化镜像构建闭环 SOP

  1. 准备介质:对应 Build 版本 install.wim + 同版本【语言和可选功能 ISO】。
  2. CI 脚本执行挂载 → 注入 LP →(可选 LIP)→注入 FOD;离线设置 UI 语言。
  3. 校验:/get‑packages检查语言包状态,无错误;捕获 dism.log 日志。
  4. commit 生成新 install.wim 制品。
  5. 验证:部署该镜像到虚拟机;进入设置‑时间和语言,确认预装语言存在,可切换显示语言。
  6. 故障处理:报错 0x80073701,优先检查语言包 Build 版本是否匹配、LIP 父语言是否预先安装、FOD /Source源路径是否正确指向 FOD‑ISO 仓库。

故障典型报错0x80073701:组件依赖缺失,最常见三种原因:①版本不匹配;②LIP 缺少父 LP;③Add‑Capability 没有正确指定 FOD ISO 源。


 

LXP Local Experience Pack(本地体验包)拆解|底层原理|依赖文件|依赖关系|配套链|边界|自动化流水线

LXP = Local Experience Pack;Win10 1803 + 引入,现代 LIP,AppX/MSIXBundle 格式,替代传统 cab‑LIP;提供部分 UI 翻译,强制依赖父完整语言包 LP (cab),缺失字符串回退至父语言。 关键区别:传统 LIP 属于 CBS 组件(cab,走 lpk.dll/cbsapi.dll);LXP 属于 AppX 部署栈,不走 CBS、不走 lpk.dll、不走 cbsapi.dllMicrosoft ...。 Win11 现状:仅 5 门小众语言保留 cab‑LIP;其余全部改为 LXP (AppX),不能 DISM /Add‑Package 离线注入 WIM 镜像,只能预配 AppX 或者部署后安装。

一、底层原理

  1. 本质:UWP/AppX 包,包名固定格式 Microsoft.LanguageExperiencePack.<langtag>_neutral.appx,内部封装部分系统 UI 本地化资源(resw/resx 字符串资源、部分 mui 资源、区域设置),不完整翻译,只覆盖高频 UIMicrosoft ...。
  2. 运行时 MUI 回退逻辑:
LXP翻译字符串 → 父LP完整语言包资源 → 系统后备语言(一般en‑US)

mui.dll依然负责资源回退链;LXP 的元数据写入 MUI 注册表,标记IsLanguageInterfacePack=TrueBaseLanguage父语言 ID。

  1. 两套部署模式
    • 用户模式:Microsoft Store / 设置‑语言,当前用户注册 AppX 包;
    • 预配模式(Provisioned):Add‑AppxProvisionedPackage,部署到 WIM 镜像;镜像阶段仅暂存包,首次用户登录才对该用户注册生效Microsoft ...。
  2. 架构分层
设置应用 / PowerShell
        ↓
AppX部署栈(appxsvc服务、mspack.dll)
        ↓
存放位置:C:\Program Files\WindowsApps\Microsoft.LanguageExperiencePack*
        ↓
系统运行时:mui.dll读取MUI注册表,构建包含LXP的语言回退链

⚠️LXP完全不经过 CBS/TrustedInstaller/tiworker.exe;lpk.dll 无法识别、不能处理 LXP 包。

二、依赖文件

文件 路径 作用
mspack.dll System32 AppX 包解析、解压、签名校验,LXP 部署核心库
appxsvc.dll System32 AppX 服务(AppX Deployment Service),AppXSvc服务
mui.dll System32 运行时读取 MUI 注册表,语言回退链,资源查找
advapi32.dll System32 MUI 注册表读写;LXP 安装后写入HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MUI
kernel32.dll System32 文件、目录操作,WindowsApps 目录管理

磁盘存放位置

  1. 预配(Provisioned)镜像内:C:\ProgramData\Windows\AppxRepository(暂存包,未对用户注册)
  2. 用户注册完成后:C:\Program Files\WindowsApps\Microsoft.LanguageExperiencePack.*
  3. 注册表:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MUI,记录 LXP 语言、BaseLanguage父语言 ID、IsLanguageInterfacePack=True

必须前置介质

  • 父完整语言包 LP (.cab):必须提前安装,LXP 强业务依赖;
  • 对应语言 FOD 包(Basic/OCR/ 手写 / TTS):LXP 只提供 UI 翻译,不提供 OCR、手写、语音能力。

三、依赖关系 & 逻辑链路

硬性依赖

  1. 必须预先安装对应的父 LP 完整语言包;LXP 本身没有业务层校验(没有 lpk.dll),安装 LXP 时不会自动校验父 LP 是否存在,父 LP 缺失不会报错,运行时直接全部回退到后备英文。
  2. AppXSvc 服务必须正常运行。
  3. 版本严格匹配:LXP AppX 版本必须与 OS Build 匹配;版本不匹配部署报错 0x80073D05、0x80073CF9。
  4. LXP ≠ FOD;FOD(Basic/OCR/Handwriting/TTS)需要单独 DISM /Add‑Capability添加。

链路 1:用户在线安装(设置 / Microsoft Store)

设置 → 时间和语言 → 添加语言,选择LXP语种
        ↓
调用AppX部署栈,下载Microsoft Store的LXP .appx包
        ↓
AppXSvc + mspack.dll:校验签名、解压包,注册到当前用户
        ↓
写入MUI注册表:写入语言ID、BaseLanguage父语言ID、IsLanguageInterfacePack=True
        ↓
mui.dll识别该语言,构建语言回退链
        ↓
用户可切换显示语言;缺失字符串回退父LP

链路 2:WIM 镜像预配 LXP(Add‑AppxProvisionedPackage)

dism挂载WIM镜像
        ↓
PowerShell `Add‑AppxProvisionedPackage /Image:xxx /PackagePath:LXP.appx /LicensePath:license.xml`
        ↓
AppX部署栈把LXP包存入镜像内`ProgramData\Windows\AppxRepository`(预配暂存,**不注册给任何用户**)
        ↓
⚠️镜像阶段**不会写入MUI注册表**;没有做任何父LP校验
        ↓
dism /unmount /commit,输出WIM镜像
        ↓
设备部署完成,**用户首次登录时系统后台自动注册LXP包,写入MUI注册表**

重大坑:镜像预配 LXP 时,没有任何组件校验父 LP 是否存在;镜像制作阶段漏装父 LP,镜像无报错,用户登录后才出现界面全部回退英文。

链路 3:卸载链路

Remove‑AppxProvisionedPackage(镜像离线) / Remove‑AppxPackage(在线)
        ↓
AppXSvc移除包存储;用户侧取消注册
        ↓
删除MUI注册表语言项

卸载顺序:先卸载 LXP,再卸载父 LP;颠倒会造成 MUI 注册表残留。

四、配套链

上层调用入口

调用方式 说明
Microsoft Store / 设置‑时间和语言 普通用户在线安装 LXP
Add‑AppxProvisionedPackage WIM 镜像离线预配 LXP 包;不能用 dism /Add‑Package(CBS 接口,不识别 AppX)Microsoft ...
Add‑AppxPackage 在线运行系统,当前用户注册 LXP(不预配到镜像)
PowerShell Get‑AppxPackage ‑AllUsers 查询已注册 LXP 包状态

下层组件

  1. AppXSvc(AppX Deployment Service)服务:AppX 部署核心服务
  2. mspack.dll:AppX 包解析、签名校验
  3. mui.dll:部署阶段不参与,系统运行时才生效,负责语言回退链
  4. FOD 按需功能包:独立 CBS 组件,LXP 不自带 OCR、手写、TTS,需要单独添加

关键边界对比(与传统 cab‑LIP)

项目 传统 cab‑LIP LXP(AppX/MSIX)
部署栈 CBS,lpk.dll / cbsapi.dll AppX 栈,不走 CBS、不走 lpk.dll
离线 WIM 镜像 ✅DISM /Add‑Package 直接注入 ❌不能用 Add‑Package;仅支持Add‑AppxProvisionedPackage预配;首次登录才注册生效
父语言校验 在线:lpk.dll 拦截;离线无校验 无论在线 / 镜像预配,均无内置校验,需要人工保障父 LP 已安装
分发渠道 语言和可选功能 ISO VLSC、商业商店离线包、Microsoft Store
Win11 支持 仅 5 门语言保留 cab 绝大多数小众语言使用 LXP

五、边界(坑点与限制)

  1. 镜像预配 LXP,镜像阶段不写入 MUI 注册表,用户首次登录才写入;镜像挂载状态下无法通过 DISM/Get‑Packages 看到该语言。
  2. 没有内置依赖校验:父 LP 缺失,LXP 部署不报错误,运行时全部回退父语言(英文),属于隐性故障。
  3. 不能使用lpinstaller.exelpksetup.exe安装 / 卸载 LXP,工具完全识别不到 AppX 形态 LXP。
  4. LXP 只做 UI 字符串翻译,不包含任何 FOD 能力(OCR、手写、TTS),必须单独添加对应语言 FOD。
  5. 版本强绑定 OS Build;LXP 版本与系统不匹配,部署报错 0x80073D05。
  6. 单语言 SKU 限制:即便是镜像预配 LXP,如果系统许可为单语言版,依然无法切换显示语言。
  7. 更新机制:LXP 支持商店自动更新;传统 cab‑LIP 无自动更新。
  8. 预配包占用镜像体积;预配之后,每个新用户首次登录会执行注册,会有短暂后台开销。

六、自动化流水线

流水线 1:在线运行系统安装 LXP(PowerShell)

#1.安装父LP(cab,DISM /Add‑Package)
#2.安装LXP AppX
Add‑AppxPackage ‑Path ".\LanguageExperiencePack.xx‑XX.appx"
#3.校验
Get‑AppxPackage ‑AllUsers | findstr LanguageExperiencePack
#4.查看系统语言列表
Get‑WinUserLanguageList

流水线 2:WIM 镜像预配 LXP 完整流水线(OEM 镜像制作)

#1.挂载WIM
dism /Mount‑Image /ImageFile:install.wim /Index:1 /MountDir:C:\mount\windows

#2.【必须优先】注入父LP完整语言包(CBS‑cab)
dism /Image:C:\mount\windows /Add‑Package /PackagePath:"xx‑XX_LP.cab"

#3.注入该语言FOD按需功能
dism /Image:C:\mount\windows /Add‑Capability /CapabilityName:Language.Basic~~~xx‑XX~0.0.1.0 /Source:F:\LanguagesAndOptionalFeatures

#4.预配LXP(AppX+license)
Add‑AppxProvisionedPackage -Image C:\mount\windows `
‑PackagePath ".\LanguageExperiencePack.xx‑XX.Neutral.appx" `
‑LicensePath ".\License.xml"

#5.提交镜像
dism /Unmount‑Image /MountDir:C:\mount\windows /Commit

⚠️镜像阶段不会验证 LXP 是否能正常工作;必须部署虚拟机,新建用户登录,检查语言是否可切换、观察是否大量界面回退父语言。

流水线 3:卸载(反向顺序)

#镜像离线卸载
Remove‑AppxProvisionedPackage -Image C:\mount\windows -PackageName "Microsoft.LanguageExperiencePack.xx‑XX_xxx"
#卸载FOD
dism /Image:C:\mount\windows /Remove‑Capability /CapabilityName:Language.Basic~~~xx‑XX~0.0.1.0
#最后卸载父LP
dism /Image:C:\mount\windows /Remove‑Package /PackageName:父LP完整包名
dism /Unmount‑Image /MountDir:C:\mount\windows /Commit

流水线 4:故障检测 SOP

  1. 现象:语言安装完成,界面大量英文;
  2. 检查:确认父 LP 完整语言包已经安装;
  3. 检查:Get‑AppxPackage ‑AllUsers确认 LXP 包注册成功;
  4. 检查注册表 MUI 分支,确认BaseLanguage父语言 ID 正确;
  5. 确认 FOD 组件是否按需安装。

典型报错:0x80073CF9:LXP 包版本与 OS Build 不匹配;0x80073D05权限不足,需要管理员权限。


将语言添加到 Windows 映像

本主题介绍如何通过添加语言包和相关语言组件来将一种或多种语言添加到 Windows 11 映像中。

 备注

若要将语言添加到个人电脑,请转到设置>时间和语言>语言和区域,然后选择要安装的语言。 了解详细信息

添加语言包、LIP 和按需功能

本部分将介绍如何将语言添加到映像中。 我们将:

  1. 添加语言并验证为每个 FOD 引入的所有语言资源。
  2. 添加 LIP 语言及其相关的按需语言功能包。

添加语言后,如果要部署到非英语区域,可通过删除英语语言组件来节省空间。 删除语言时,请按与添加语言组件相反的顺序卸载语言组件。

装载映像

使用 DISM 装载 Windows 映像:

Windows 命令提示符
md C:\mount\windows
Dism /Mount-Image /ImageFile:install.wim /Index:1 /MountDir:"C:\mount\windows"

添加语言包、LIP (LXP) 和语言功能

通过添加语言包及其相应的按需功能包来预安装语言。 如果要添加 LIP 语言,请确保还包含所有相关的基本语言:

  1. 在 Windows 资源管理器中,双击“语言和可选功能 ISO”。 这会装载 ISO 并为其分配驱动器号,例如 F:\

  2. 添加语言包:

    使用 DISM 将语言包添加到装载的映像中:

    Windows 命令提示符
    Dism /Image:"C:\mount\windows" /Add-Package /PackagePath="F:\LanguagesAndOptionalFeatures\Microsoft-Windows-Client-Language-Pack_x64_es-es.cab"

    PackagePath 可以是已装载的语言和可选功能 ISO 或自定义的 FOD 和语言存储库。 此示例使用已装载的语言和可选功能 ISO。

  3. 检查以确保已为已安装的 FOD 添加了语言包和语言附属包:

    command
    Dism /Image:"C:\mount\windows" /Get-Packages /format:table

    应该会在输出中看到如下所示的内容:

    command
    Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~es-es~10.0.19041.1
    Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~en-US~10.0.19041.1
    Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~es-es~10.0.19041.1
    Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~~10.0.19041.1
    Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~wow64~en-US~10.0.19041.1
    Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~wow64~es-es~10.0.19041.1
    Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~wow64~~10.0.19041.1

    除了现在显示在映像中的 es-es 语言包外,还请注意 MSPaint 按需功能的附属包包含 en-us 和 es-es 语言代码。 对于添加的每种语言,请确保每个带有特定于语言的附属包的 FOD 都是这种情况。

     备注

    必须使用 DISM /add-capability 添加带附属包的 FOD,这样才能正确添加附属包。

  4. (可选)添加 LIP 语言

    在 Windows 11 中,只有以 .cab 文件形式分发的语言包(包括 LIP)才可用于映像。 有五种 LIP 语言(ca-ES、eu-ES、gl-ES、id-ID、vi-VN)可作为 .cab 提供。 未以 .cab 文件形式分发的 LIP 语言只能作为 .appx 包提供(可在登录后通过“设置”应用获得)。

    在本例中,我们添加了加泰罗尼亚语,它需要 es-ES 基本语言:

    Windows 命令提示符
     Dism /Image:"C:\mount\windows" /Add-Package /PackagePath="F:\LanguagesAndOptionalFeatures\Microsoft-Windows-Lip-Language-Pack_x64_ca-es.cab"
  5. 添加语言和区域按需功能以支持语言包和 LIP。 建议将基本内容、字体、OCR、文本到语音转换和语音识别 FOD 包含在内(如果它们适用于你预安装的语言)。 此外,如果交付的设备附带笔,还应包括手写语言组件 FOD。

    并非所有 LIP 语言都具有所有语言组件。 例如,加泰罗尼亚语 (ca-es) 仅具有基本内容和手写 FOD。 如需了解适用于语言的 FOD,请参阅 LP 到 FOD 映射电子

    例如:将基本内容、OCR、文本转语音和语音识别添加到 es-ES:

    Windows 命令提示符
    Dism /Image:"C:\mount\windows" /Add-Capability /capabilityname:Language.Basic~~~es-es~0.0.1.0 /capabilityname:Language.Handwriting~~~es-es~0.0.1.0 /capabilityname:Language.OCR~~~es-es~0.0.1.0 /capabilityname:Language.Speech~~~es-es~0.0.1.0 /capabilityname:Language.TextToSpeech~~~es-es~0.0.1.0 /source:C:\repository

    例如:将基本内容和手写添加到 ca-es:

    command
    Dism /Image:"C:\mount\windows" /Add-Capability
    /capabilityname:Language.Basic~~~ca-es~0.0.1.0
    /capabilityname:Language.Handwriting~~~ca-es~0.0.1.0
    /source:C:\repository

    验证这些包是否在映像中:

    command
    Dism /Image:"C:\mount\windows" /Get-Packages /format:table
    Dism /Image:"C:\mount\windows" /Get-Capabilities /format:table | findstr /i "installed"

     备注

    只有管理员帐户可以执行更改操作。 标准用户将获得有限的体验。 有关详细信息,请参阅 Windows 10 中不显示语言功能

  6. 如果在添加语言之前添加了更新包 (LCU),请重新安装更新包,以确保更新的所有语言资源都在你的映像中。 有关详细信息,请参阅向 Windows 映像添加更新

删除语言、LIP、LXP 和按需功能

 重要

如果有挂起的联机操作,则不能从脱机的 Windows 映像中删除语言包。 Windows 映像应为最近安装并捕获的映像。 这将保证 Windows 映像没有任何需要重新启动的挂起的联机操作。

  1. 获取映像中安装的包和功能列表:

    command
    Dism /Image:"C:\mount\windows" /Get-Packages /format:table
    Dism /Image:"C:\mount\windows" /Get-Capabilities /format:table | findstr /i "installed"
  2. 删除语言、基于 .cab 的 LIP 和按需功能:

    command
    Dism /Image:"C:\mount\windows" /Remove-Package /PackageName:<language pack name> /PackageName:<feature on demand name> ...
  3. 删除通过 LXP 添加的 LIP:

    command
    Dism /remove-provisionedappxpackage /packagename:Microsoft.LanguageExperiencePack<lang_version>_neutral__8wekyb3d8bbwe
  4. 确保它们不再位于映像中:

    command
    Dism /Image:"C:\mount\windows" /Get-Packages /format:table
    Dism /Image:"C:\mount\windows" /Get-Capabilities /format:table | findstr /i "installed"

更改默认语言、区域设置和其他国际设置

  • 从 Windows 11 开始,DISM 设置的默认系统 UI 语言在所有版本中保持不变(家庭版除外)。 对于所有商业版,在开箱即用体验 (OOBE) 期间选择的语言会设置为系统首选 UI 语言,Windows 将以此语言显示;对于家庭版,在 OOBE 期间选择的语言将继续用作默认系统 UI 语言。

  • 从 Windows 10 版本 2004 开始,如果将基于 .appx 的语言体验包 (LXP) 支持的语言作为参数传递,则该语言将设置为系统首选 UI 语言,其父语言将设置为默认系统 UI 语言。 在以前的版本中,仅支持基于 .cab 的语言包。

    command
    Dism /Image:"C:\mount\windows" /Set-AllIntl:es-es

    查看可用的语言设置:

    command
    Dism /Image:"C:\mount\windows" /Get-Intl
  • 对于联机映像,请使用“控制面板”或国际设置 PowerShell cmdletsGet-WinSystemLocale 和 Set-WinSystemLocale <language>。 这适用于以 LXP 形式提供的语言。

有关更多选项,请参阅

将语言添加到恢复环境 (Windows RE)

对于添加到 Windows 的任何语言,请尽可能将语言添加到 Windows 恢复环境 (WinRE)

并非所有语言或 LIP 都有本地化的恢复映像。

使用语言和可选功能 ISO 中的语言而不是 Windows 10 ADK 中的语言来本地化 WinRE。

 备注

已知问题:Windows 10 2018 年 10 月更新包含的 Windows RE 泰语映像(en-US 基础语言 + th-th 语言包)随附的问题,即最终用户只能在 Windows 恢复环境中看到没有泰语文本的 UI 组件(或英语)、恢复过程显示的文本(按钮重置)和/或功能更新的重新启动过程中的某些屏幕。 要解决此问题,请预安装 2018.11D 质量更新。

  1. 装载恢复映像。

    • 脱机:恢复映像位于 Windows 映像中:

      command
      md C:\mount\winre
      Dism /Mount-Image /ImageFile:"C:\mount\windows\Windows\System32\Recovery\winre.wim" /index:1 /MountDir:"C:\mount\winre"
    • 联机

      command
      md C:\mount\winre
      Dism /Mount-Image /ImageFile:"C:\Windows\System32\Recovery\winre.wim" /index:1 /MountDir:"C:\mount\winre"

      请注意,Windows RE 一直位于 Windows 映像中,直到开箱即用体验出现之后才会被移动到单独的恢复分区。

  2. 添加语言:

    command
    D:
    cd D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\lp.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-Rejuv_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-EnhancedStorage_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-Scripting_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-SecureStartup_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-SRT_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-WDS-Tools_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-WMI_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-StorageWMI_es-es.cab"
    Dism /Image:"C:\mount\winre" /Add-Package /PackagePath:"D:\Windows Preinstallation Environment\x64\WinPE_OCs\es-es\WinPE-HTA_es-es.cab"

    其中 D:\ 是语言和可选功能 ISO。

  3. 确保它们位于映像中:

    command
    Dism /Get-Packages /Image:"C:\mount\winre"

    /Get-Packages 的示例输出:

    command
    Package Identity : Microsoft-Windows-WinPE-Rejuv_es-es ... es-es~10.0.9926.0 State : Installed
  4. 将更改提交到恢复映像:

    command
    Dism /Commit-Image /MountDir:"C:\mount\winre"

    对于联机映像,还应删除装载文件夹:

    command
    rmdir /s "C:\mount\winre"

捕获更改

  • 脱机:适用于 Windows 映像 (install.wim)

    将更改提交到 Windows 映像:

    command
    Dism /Commit-Image /MountDir:"C:\mount\windows"
  • 联机:修改运行的 Windows 安装

    通用化并捕获映像:

    command
    %WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe

    如需了解详细信息,请参阅通用化

后续步骤

本地化更多 Windows 内容

本地化安装过程

 

适用于 Windows 的可用语言

下表显示了适用于 Windows 桌面版本和 Windows Server 的支持的语言包,以及适用于 Windows 桌面版本的支持的语言界面包 (LIP)。 LIP 可用于 Windows 桌面版本,但不适用于 Windows Server。 有关详细信息,请参阅语言包

语言、LIP 或按需功能的版本必须与版本号匹配。 例如,既不能将 Windows 10 版本 1809 LIP 添加到 Windows 10 版本 1803 映像,也不能将 Windows Server 2019 语言包添加到 Windows Server 2016。

不能将语言添加到 Home 单语言版和 Home 国家/地区特定版。

若要了解如何向 Windows 添加语言或从何处获取它们,请参阅从何处获取语言包和 LIP

有关支持的语言和区域设置的完整列表,请参阅区域设置标识符常量和字符串

支持的语言包和语言界面包

下表包括了以下几种设置:

  • 语言/区域 - 将在 UI 中显示的语言名称。 所有 Windows 语言包都可用于 Windows Server。 在 Windows Server 2012 及更高版本中,用户界面 (UI) 仅针对以粗体列出的 18 种语言进行了本地化。
  • 语言/区域标记 - 基于 RFC 3066 的语言标记约定的语言标识符。 该设置用于部署映像服务和管理 (DISM) 工具或用于无人参与的应答文件。
  • 语言/区域标识符 - 语言标识符的十六进制表示形式。 使用 DISM 指定输入方法时该设置用于键盘标识符。
  • 语言/区域十进制标识符 - 语言标识符的十进制表示形式。 该设置用于 Oobe.xml。

语言包

 
语言/区域 语言/区域标记 语言/区域标识符 语言/区域十进制标识符
阿拉伯语(沙特阿拉伯) ar-SA 0x0401 1025
巴斯克语(巴斯克语) eu-ES 0x042d 1069
保加利亚语(保加利亚) bg-BG 0x0402 1026
加泰罗尼亚语 ca-ES 0x0403 1027
中文(繁体,香港特别行政区) zh-HK

注意: 不再使用。 请参阅 zh-TW。

0x0c04 3076
中文(简体,中国) zh-CN 0x0804 2052
中文(繁体,台湾) zh-TW 0x0404 1028
克罗地亚语(克罗地亚) hr-HR 0x041a 1050
捷克语(捷克共和国) cs-CZ 0x0405 1029
丹麦语(丹麦) da-DK 0x0406 1030
荷兰语(荷兰) nl-NL 0x0413 1043
英语(美国) en-US 0x0409 2052
英语(英国) en-GB 0x0809 2057
爱沙尼亚语(爱沙尼亚) et-EE 0x0425 1061
芬兰语(芬兰) fi-FI 0x040b 1035
法语(加拿大) fr-CA 0x0c0c 3084
法语(法国) fr-FR 0x040c 1036
加利西亚语 gl-ES 0x0456 1110
德语(德国) de-DE 0x0407 1031
希腊语(希腊) el-GR 0x0408 1032
希伯来语(以色列) he-IL 0x040d 1037
匈牙利语(匈牙利) hu-HU 0x040e 1038
印度尼西亚语(印度尼西亚) id-ID 0x0421 1057
意大利语(意大利) it-IT 0x0410 1040
日语(日本) ja-JP 0x0411 1041
韩语(韩国) ko-KR 0x0412 1042
拉脱维亚语(拉脱维亚) lv-LV 0x0426 1062
立陶宛语(立陶宛) lt-LT 0x0427 1063
挪威语(博克马尔语,挪威) nb-NO 0x0414 1044
波兰语(波兰) pl-PL 0x0415 1045
葡萄牙语(巴西) pt-BR 0x0416 1046
葡萄牙语(葡萄牙) pt-PT 0x0816 2070
罗马尼亚语(罗马尼亚) ro-RO 0x0418 1048
俄语(俄罗斯) ru-RU 0x0419 1049
塞尔维亚语(拉丁语,塞尔维亚共和国) sr-Latn-CS

注意: 不再使用。 请参阅 sr-Latn-RS。

0x081a 2074
塞尔维亚语(拉丁语,塞尔维亚共和国) sr-Latn-RS 0x241A 9242
斯洛伐克语(斯洛伐克) sk-SK 0x041b 1051
斯洛文尼亚语(斯洛文尼亚) sl-SI 0x0424 1060
西班牙语(墨西哥) es-MX 0x080a 2058
西班牙语(西班牙) es-ES 0x0c0a 3082
瑞典语(瑞典) sv-SE 0x041d 1053
泰语(泰国) th-TH 0x041e 1054
土耳其语(土耳其) tr-TR 0x041f 1055
乌克兰语(乌克兰) uk-UA 0x0422 1058
越南语 vi-VN 0x042a 1066

语言界面包 (LIP)

除非另有说明,否则以下 LIP 适用于 Windows 11。 对于 Windows Server,可使用更改键盘和区域设置(如货币、时区和时间/日期格式)的选项,但 LIP 不可用。 有关详细信息,请参阅语言包

 备注

从 Windows 11 开始,LIP 的其中五种语言(ca-es、eu-ES、gl-ES、id-ID、vi-VN)以 cab 和 .appx 包的形式提供。

 
语言/区域 语言/区域标记 基本语言/区域 语言/区域标识符 语言/区域十进制标识符
南非荷兰语(南非) af-ZA 主要语言:en-US

次要语言:en-GB

0x0436 1078
阿尔巴尼亚语(阿尔巴尼亚) sq-AL 主要语言:en-US

次要语言:en-GB

0x041c 1052
阿姆哈拉语(埃塞俄比亚) am-ET 主要语言:en-US

次要语言:en-GB

0x045e 1118
亚美尼亚语(亚美尼亚) hy-AM 主要语言:en-US

次要语言:en-GB,ru-RU

0x042b 1067
阿萨姆语(印度) as-IN 主要语言:en-US

次要语言:en-GB

0x044d 1101
阿塞拜疆 az-Latn-AZ 主要语言:en-US

次要语言:en-GB,ru-RU

0x042c 1068
巴斯克语(巴斯克语) eu-ES 主要语言:es-ES

次要语言:en-GB、en-US、fr-FR

0x042d 1069
白俄罗斯语 be-BY 主要语言:ru-RU

次要语言:en-GB、en-US

0x0423 1059
孟加拉语(印度) bn-IN 主要语言:en-US

次要语言:en-GB

0x0445 1093
波斯尼亚语(拉丁语) bs-Latn-BA 主要语言:en-US

次要语言:en-GB、hr-HR、sr-Latn-RS

0x141a 5146
加泰罗尼亚语 ca-ES 主要语言:es-ES

次要语言:en-GB、en-US、fr-FR

0x0403 1027
切罗基语 chr-CHER-US 主要语言:en-US

次要语言:en-GB

0x045c 1116
菲律宾语 fil-PH 主要语言:en-US

次要语言:en-GB

0x0464 1124
加利西亚语 gl-ES 主要语言:es-ES

次要语言:en-GB、en-US

0x0456 1110
格鲁吉亚语(格鲁吉亚) ka-GE 主要语言:en-US

次要语言:en-GB,ru-RU

0x0437 1079
古吉拉特语(印度) gu-IN 主要语言:en-US

次要语言:en-GB

0x0447 1095
印地语(印度) hi-IN 主要语言:en-US

次要语言:en-GB

0x0439 1081
冰岛语(冰岛) is-IS 主要语言:en-US

次要语言:en-GB

0x040f 1039
印度尼西亚语(印度尼西亚) id-ID 主要语言:en-US

次要语言:en-GB

0x0421 1057
爱尔兰语(爱尔兰) ga-IE 主要语言:en-US

次要语言:en-GB

0x083c 2108
卡纳达语(印度) kn-IN 主要语言:en-US

次要语言:en-GB

0x044b 1099
哈萨克语(哈萨克斯坦) kk-KZ 主要语言:en-US

次要语言:en-GB,ru-RU

0x043f 1087
高棉语(柬埔寨) km-KH 主要语言:en-US

次要语言:en-GB

0x0453 1107
孔卡尼语(印度) kok-IN 主要语言:en-US

次要语言:en-GB

0x0457 1111
老挝语(老挝) lo-LA 主要语言:en-US

次要语言:en-GB

0x0454 1108
卢森堡语(卢森堡) lb-LU 主要语言:fr-FR

次要语言:de-DE、en-GB、en-US

0x046e 1134
马其顿语(北马其顿) mk-MK 主要语言:en-US

次要语言:en-GB

0x042f 1071
马来语(马来西亚、文莱和新加坡) ms-MY 主要语言:en-US

次要语言:en-GB

0x043e 1086
马拉雅拉姆语(印度) ml-IN 主要语言:en-US

次要语言:en-GB

0x044c 1100
马耳他语(马耳他) mt-MT 主要语言:en-US

次要语言:en-GB

0x043a 1082
毛利语(新西兰) mi-NZ 主要语言:en-US

次要语言:en-GB

0x0481 1153
马拉地语(印度) mr-IN 主要语言:en-US

次要语言:en-GB

0x044e 1102
尼泊尔语(尼泊尔联邦民主共和国) ne-NP 主要语言:en-US

次要语言:en-GB

0x0461 1121
挪威语、尼诺斯克语(挪威) nn-NO 主要语言:nb-NO

次要语言:en-GB、en-US

0x0814 2068
奥里亚语(印度) or-IN 主要语言:en-US

次要语言:en-GB

0x0448 1096
波斯语 fa-IR 主要语言:en-US

次要语言:en-GB

0x0429 1065
旁遮普语(印度) pa-IN 主要语言:en-US

次要语言:en-GB

0x0446 1094
克丘亚语(秘鲁) quz-PE 主要语言:es-MX

次要语言:es-ES、en-GB、en-US

0x0c6b 3179
苏格兰盖尔语 gd-GB 主要语言:en-US

次要语言:en-GB

0x0491 1169
塞尔维亚语(西里尔文,波斯尼亚和黑塞哥维那) sr-Cyrl-BA 主要语言:en-US

次要语言:en-GB、sr-Latn-RS

0x1C1A 7194
塞尔维亚语(西里尔文,塞尔维亚) sr-Cyrl-CS 注意:不再使用。 请参阅 sr-Latn-RS。 主要语言:sr-Latn-CS

次要语言:en-GB、en-US

0x0c1a 3098
塞尔维亚语(西里尔文,塞尔维亚) sr-Cyrl-RS 主要语言:sr-Latn-RS

次要语言:en-GB、en-US

0x281A 10266
泰米尔语(印度) ta-IN 主要语言:en-US

次要语言:en-GB

0x0449 1097
鞑靼语(俄罗斯) tt-RU 主要语言:ru-RU

次要语言:en-GB、en-US

0x0444 1092
泰卢固语(印度) te-IN 主要语言:en-US

次要语言:en-GB

0x044a 1098
乌尔都语 ur-PK 主要语言:en-US

次要语言:en-GB

0x0420 1056
维吾尔语 ug-CN 主要语言:zh-CN

次要语言:en-GB、en-US

0x0480 1152
乌兹别克语(拉丁文) uz-Latn-UZ 主要语言:en-US

次要语言:en-GB,ru-RU

0x0443 1091
巴伦西亚语 ca-ES-valencia 主要语言:es-ES

次要语言:en-GB、en-US

0x0803 2051
越南语 vi-VN 主要语言:en-US

次要语言:en-GB

0x042a 1066
威尔士语(英国) cy-GB 主要语言:en-US

次要语言:en-GB


语言和区域按需功能 (FOD)

将语言包添加到映像时,还可以添加语言按需功能 (FOD) 以启用其他功能。 若要查看可用的非语言或区域相关 FOD,请参阅可用的按需功能

若要了解如何将 FOD 和语言包添加到 Windows 映像,请参阅将语言添加到 Windows

建议:在添加语言包后添加 FOD。 预安装设备目标市场中的用户预期所需的基本、字体、文本转语音、光学字符识别 (OCR) 组件和语音识别语言。 此外,将手写识别 FOD 添加到随笔一起提供的设备。

用户还可以在“设置”应用的“语言”页中添加其他语言包和语言 FOD。 在 Windows 11 中,非管理员用户帐户可同时添加显示语言及其对应的语言功能。

语言 FOD 有六种类型:

  • 基本
  • 字体
  • OCR
  • 手写内容识别
  • 文本到语音转换
  • 零售演示体验

 备注

并非所有按需功能都适用于每种语言。 如需了解适用于语言的 FOD,请参阅 LP 到 FOD 映射电子

基本

拼写检查、文本预测、断词和断字(如果适用于该语言)。

必须在添加任何其他语言 FOD 之前添加此组件。

  • 建议:为映像中预安装的每种语言预安装此包。
  • 示例包名称:Microsoft-Windows-LanguageFeatures-Basic-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.Basic~~~fr-FR~0.0.1.0

字体

字体。 某些语言需要字体包。 例如,th-TH 需要泰语字体包。 查看字体列表

  • 示例包名称:Microsoft-Windows-LanguageFeatures-Fonts-Thai-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.Fonts.Thai~~~und-THAI~0.0.1.0

OCR

识别和输出映像中的文本。

  • 建议:为映像中预安装的每种语言预安装此包。
  • 示例包名称:Microsoft-Windows-LanguageFeatures-OCR-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.OCR~~~fr-FR~0.0.1.0
  • 依赖项:同一语言的基本组件。

手写内容识别

启用带有笔输入的设备的手写识别。

  • 建议:在具有触摸屏或支持笔的屏幕的任何设备上预安装设备的目标语言。
  • 示例包名称:Microsoft-Windows-LanguageFeatures-Handwriting-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.Handwriting~~~fr-FR~0.0.1.0
  • 依赖项:同一语言的基本组件。

文本到语音转换

启用文本到语音转换(由 Cortana 和“讲述人”使用)。

  • 建议:为映像中预安装的每种语言预安装此包。
  • 示例包名称:Microsoft-Windows-LanguageFeatures-TextToSpeech-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.TextToSpeech~~~fr-FR~0.0.1.0
  • 依赖项:同一语言的基本组件。

语音识别

识别语音输入,由 Cortana 和 Windows 语音识别使用。

  • 建议:为映像中预安装的每种语言预安装此包。
  • 示例包名称:Microsoft-Windows-LanguageFeatures-Speech-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.Speech~~~fr-FR~0.0.1.0
  • 依赖项:同一语言的基本和文本转语音组件。

零售演示体验

零售演示体验

  • 建议:为将在零售展厅销售设备所用的每种语言预安装此包。 另外,还考虑预加载零售演示模式应用和内容。
  • 示例包名称:Microsoft-Windows-RetailDemo-OfflineContent-Content-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
  • 示例功能名称:Language.RetailDemo~~~fr-FR~0.0.1.0
  • 依赖项:相同语言的基本组件 Basic,加上基本零售演示包 Microsoft-Windows-RetailDemo-OfflineContent-Content-Package 和英语零售演示包 Microsoft-Windows-RetailDemo-OfflineContent-Content-en-us-Package。

字体按需功能

为某些区域添加语言时,需要添加字体。

字体 FOD 提供用于特定书写系统和语言的其他字体。 Windows 显示语言时不需要这些附加字体。 但是,在 Windows 10 之前,大多数这些字体默认安装在每个系统上,并且其中一些字体用于显示用户界面。 使用特定语言的客户可能需要与该语言相关的其他字体,以用于以这些语言运行的应用程序中的文档或用户界面字符串。 功能名称使用脚本标识符;例如,“Deva”指示 Devanagari 脚本,用于印地语、孔卡尼语和其他语言。

建议:如果要将电脑销售到某个区域,请安装该区域的字体(如果要将设备运送到使用泰语的区域,应在这些设备上预安装 th-TH)。

 
区域 说明 所需的字体功能
am-ET 阿姆哈拉语 Language.Fonts.Ethi~~~und-ETHI~0.0.1.0
ar-SA 阿拉伯语(沙特阿拉伯) Language.Fonts.Arab~~~und-ARAB~0.0.1.0
ar-SY 阿拉伯语(叙利亚) Language.Fonts.Syrc~~~und-SYRC~0.0.1.0
as-IN 阿萨姆语 Language.Fonts.Beng~~~und-BENG~0.0.1.0
bn-BD 孟加拉语(孟加拉国) Language.Fonts.Beng~~~und-BENG~0.0.1.0
bn-IN 孟加拉语(印度) Language.Fonts.Beng~~~und-BENG~0.0.1.0
chr-Cher-US 切罗基语(切罗基) Language.Fonts.Cher~~~und-CHER~0.0.1.0
fa-IR 波斯语 Language.Fonts.Arab~~~und-ARAB~0.0.1.0
gu-IN 古吉拉特语 Language.Fonts.Gujr~~~und-GUJR~0.0.1.0
he-IL 希伯来语 Language.Fonts.Hebr~~~und-HEBR~0.0.1.0
hi-IN Hindi Language.Fonts.Deva~~~und-DEVA~0.0.1.0
ja-JP 日语 Language.Fonts.Jpan~~~und-JPAN~0.0.1.0
km-KH 高棉语 Language.Fonts.Khmr~~~und-KHMR~0.0.1.0
kn-IN 卡纳达语 Language.Fonts.Knda~~~und-KNDA~0.0.1.0
kok-IN 孔卡尼语 Language.Fonts.Deva~~~und-DEVA~0.0.1.0
ko-KR 韩语 Language.Fonts.Kore~~~und-KORE~0.0.1.0
ku-Arab-IQ 中央库尔德语(阿拉伯) Language.Fonts.Arab~~~und-ARAB~0.0.1.0
lo-LA 老挝语 Language.Fonts.Laoo~~~und-LAOO~0.0.1.0
ml-IN 马拉雅拉姆语 Language.Fonts.Mlym~~~und-MLYM~0.0.1.0
mr-IN 马拉地语 Language.Fonts.Deva~~~und-DEVA~0.0.1.0
ne-NP 尼泊尔语 Language.Fonts.Deva~~~und-DEVA~0.0.1.0
or-IN 奥里亚语 Language.Fonts.Orya~~~und-ORYA~0.0.1.0
pa-Arab-PK 旁遮普语(阿拉伯语) Language.Fonts.Arab~~~und-ARAB~0.0.1.0
pa-IN 旁遮普语 Language.Fonts.Guru~~~und-GURU~0.0.1.
prs-AF 达里语 Language.Fonts.Arab~~~und-ARAB~0.0.1.0
sd-Arab-PK 信德语(阿拉伯语) Language.Fonts.Arab~~~und-ARAB~0.0.1.0
si-LK 僧伽罗语 Language.Fonts.Sinh~~~und-SINH~0.0.1.0
syr-SY 叙利亚语 Language.Fonts.Syrc~~~und-SYRC~0.0.1.0
ta-IN 泰米尔语 Language.Fonts.Taml~~~und-TAML~0.0.1.0
te-IN 泰卢固语 Language.Fonts.Telu~~~und-TELU~0.0.1.
th-TH 泰语 Language.Fonts.Thai~~~und-THAI~0.0.1.0
ti-ET 提格里尼亚语 Language.Fonts.Ethi~~~und-ETHI~0.0.1.0
ug-CN 维吾尔语 Language.Fonts.Arab~~~und-ARAB~0.0.1.0
ur-PK 乌尔都语 Language.Fonts.Arab~~~und-ARAB~0.0.1.0
zh-CN 中文(简体) Language.Fonts.Hans~~~und-HANS~0.0.1.0
zh-TW 繁体中文(香港特别行政区、澳门特别行政区和中国台湾) Language.Fonts.Hant~~~und-HANT~0.0.1.0

其他可用字体

这些字体是可选的,并且不是所有区域都必需的。

 
功能名称 说明
Language.Fonts.PanEuropeanSupplementalFonts~~~~0.0.1.0 泛欧语系补充字体。 包括其他字体:Arial Nova、Georgia Pro、Gill Sans Nova、Neue Haas Grotesk、Rockwell Nova、Verdana Pro。

其他区域特定的要求

 
区域 程序包 说明 建议
zh-TW Microsoft-Windows-InternationalFeatures-Taiwan-Package~31bf3856ad364e35~amd64~~.cab 对台湾日期格式设置要求的补充支持。 将为位于台湾的客户提供包。 仅在运送到台湾市场的设备上预安装。 未在设备上安装此功能会导致对使用台湾日历的任何 API 调用失败。

请注意,此功能在语言和可选功能 ISO 上作为 .cab 文件分发。 使用 DISM /add-package 将其添加到映像。 有关详细信息,请参阅使用 DISM 脱机添加或删除包

请注意,此功能在语言和可选功能 ISO 上作为 .cab 文件分发。 使用 DISM /add-package 将其添加到映像。 有关详细信息,请参阅使用 DISM 脱机添加或删除包

下载所有可用语言 FOD 的列表

为标准用户提供语言获取支持

从 Windows 11 开始,标准用户可以从设置应用程序的“时间与语言”页面获取语言按需功能包。 以前,标准用户只能从 Windows 语言设置获取语言包。

限制用户获取语言包或语言按需功能包

IT 管理员可以通过设置 RestrictLanguagePacksAndFeaturesInstall 组策略或 MDM 策略,限制用户从 Windows 语言设置获取语言包或语言按需功能包:

  • 组策略位于“控制面板” | “区域和语言选项”下
  • MDM 策略位于 TimeLanguageSettings 路径下。

lpksetup.exe 是 Windows 操作系统中的一个可执行文件,位于 C:\Windows\System32 目录下。它与 语言包安装本地化设置 相关,主要用于帮助用户添加或删除 Windows 操作系统的语言包。以下是对 lpksetup.exe 的详细介绍:

1. 功能

lpksetup.exe 主要用于管理 Windows 操作系统的语言包。它允许用户在系统上安装、卸载或设置不同的语言支持,帮助操作系统适应多语言环境。这包括:

  • 安装语言包:允许用户为系统安装新的语言包,支持系统界面(如菜单、提示信息等)显示为不同语言。
  • 卸载语言包:用户可以通过 lpksetup.exe 删除不再需要的语言包。
  • 修改语言首选项:通过语言包设置,用户可以更改 Windows 的显示语言。

2. 如何使用

通常,lpksetup.exe 不是一个需要用户频繁直接操作的工具。用户可以通过以下步骤使用它来安装语言包:

  • 打开 控制面板
  • 进入 时钟和区域,然后选择 区域和语言
  • 在 语言 选项卡中,点击 添加语言,然后选择您想安装的语言。如果该语言包尚未安装,系统会引导您使用 lpksetup.exe 安装该语言包。

3. 安全性和风险

通常情况下,lpksetup.exe 是一个合法的 Windows 系统文件,位于 C:\Windows\System32 文件夹下,属于操作系统的一部分,并不会带来安全风险。然而,如果这个文件出现在其他目录,或者被恶意软件替换、伪装成其他程序,可能会存在潜在的安全隐患。

如果怀疑 lpksetup.exe 是恶意软件,可以通过以下方式检查:

  • 使用 Windows Defender 或其他安全软件扫描整个系统。
  • 确认文件是否位于正确的文件夹(C:\Windows\System32)。
  • 检查文件的数字签名,确保它由微软签发。

4. 如何关闭或禁用

如果您不需要使用多个语言包,或者不希望语言包功能影响系统的性能,您可以选择删除不需要的语言包,或者禁用相关功能。这些操作也可以通过 控制面板 中的语言设置进行。

lpksetup.exe 是 Windows 系统的一个正常组件,负责处理与语言包相关的任务。一般来说,您不需要手动运行它,除非您需要添加或删除系统语言包。只要它位于正确的位置并且没有出现异常,它是完全安全的。如果您发现文件出现问题或怀疑其为恶意程序,可以使用安全工具进行检查。


如何使用 lpksetup 命令安装语言包的步骤,以及通过DISM命令安装的备选方案。

🛠️ 使用 lpksetup 安装语言包

具体安装步骤

  1. 启动工具

    • 按下 Win + R 组合键,打开"运行"对话框。

    • 输入 lpksetup,然后按回车或点击"确定"。

  2. 选择安装任务

    • 这会打开"Install or uninstall display languages"窗口。

    • 点击 "Install display languages" 。

  3. 选择语言包文件

    • 在接下来的界面中,点击 "Browse" 按钮。

    • 找到并选择你事先下载好的语言包文件(格式为 .cab)。选中后点击"Next"。

  4. 同意协议并安装

    • 阅读并同意许可协议,然后继续点击"Next"。

    • 程序会开始安装语言包,安装速度取决于电脑配置,请耐心等待。

  5. 设置系统显示语言并重启

    • 语言包安装成功后,建议重启电脑

    • 重启后,前往"设置" -> "时间和语言" -> "区域和语言"。

    • 在已安装的语言列表中,找到新安装的语言(如"中文(简体)")并点击它,然后选择 "设为默认"

    • 根据需要,你还可以点击此语言的"选项"按钮,下载并设置对应的语言功能,如语音识别、手写等。

⚡ 使用DISM命令安装(高级选项)

除了 lpksetup,你还可以使用更强大的 DISM(部署映像服务和管理) 工具来安装语言包,但此方法需要以管理员身份运行命令提示符。

基本命令格式如下:

cmd
dism /online /add-package /packagepath:"这里替换成你的CAB文件完整路径"

举个例子,如果你的语言包文件 lp.cab 放在 C:\Downloads\LanguagePacks 文件夹下,那么命令就应该是:

cmd
dism /online /add-package /packagepath:"C:\Downloads\LanguagePacks\lp.cab"

lpksetup 与 DISM 命令对比

为了帮你更好地理解这两种方法的区别,请看下面的:

 
 
对比项 lpksetup 命令 DISM 命令
操作界面 图形化界面(GUI),步骤清晰 命令行(CLI),需输入指令
权限要求 通常不需要管理员权限 必须以管理员身份运行命令提示符
适用场景 适合手动安装单个已下载的.cab语言包 适合批量安装、系统部署或自动化脚本
系统集成 安装后仍需在设置中将语言设为默认 安装后仍需在设置中将语言设为默认

💎 重要提醒

  • 语言包来源:请务必从微软官方或可信渠道获取语言包,以确保系统安全。

  • 系统兼容性:确保下载的语言包版本与你的 Windows 系统版本(如 Windows 10, Windows 8.1)及系统架构(32位或64位)相匹配。

  • 管理员权限:使用 DISM 命令时,记住一定要用管理员身份运行命令提示符。

  • 设置默认语言:无论用哪种方法安装语言包,安装后通常都需要在系统的语言设置里将其设置为默认显示语言,并重启电脑后更改才会全面生效。


 


C:\Windows\System32\lpk.dll 是 Windows 操作系统中的一个动态链接库(DLL)文件,主要与系统的 语言包(Language Pack)本地化功能(Localization) 相关。它是 Windows 操作系统中的一个标准组件,负责支持多语言界面的显示和处理。

1. 功能:

lpk.dll 主要用于处理以下功能:

  • 语言本地化支持:它帮助 Windows 操作系统处理不同语言的显示,包括操作系统界面、错误消息、日期时间格式等。通过这个 DLL,系统能够在安装了多个语言包的情况下正确显示不同的语言和本地化内容。
  • 语言包的加载和管理lpk.dll 负责加载和管理系统的语言包,确保系统能够为用户提供语言选择和切换的功能。
  • 多语言支持:对于多语言环境,lpk.dll 确保不同的程序和 Windows 系统部分能够正确显示和使用相应的语言资源。

2. 如何工作:

  • 当用户在 Windows 上切换语言时,lpk.dll 会协助加载与所选语言相关的资源文件(如界面、帮助文件、日期格式等)。它通过提供相关的功能,使得 Windows 系统能够支持多语言显示。
  • 在一些特定的应用程序中,lpk.dll 还负责确保这些应用程序根据系统语言和地区设置显示相应的内容。

3. 为什么存在:

  • 多语言支持:随着全球化的发展,Windows 操作系统需要支持不同语言和地区的用户。lpk.dll 是实现这一需求的关键组件之一。它允许操作系统支持多个语言并在不同的区域显示相应的内容。
  • 本地化和国际化:除了系统语言设置,Windows 还需要根据用户的地区和文化设置调整许多系统行为,如日期、时间、货币格式等。lpk.dll 是支持这一本地化(Localization)和国际化(Internationalization)过程的一个重要部分。

4. 安全性与问题排查:

虽然 lpk.dll 是 Windows 操作系统中的合法文件,但它仍然可能成为恶意软件的目标。以下是如何检查和处理 lpk.dll 文件的一些建议:

  • 文件位置lpk.dll 文件应位于 C:\Windows\System32 文件夹中。如果它出现在其他位置,可能是恶意软件伪装成该文件,需要进行安全检查。
  • 数字签名:通过检查 lpk.dll 的数字签名,可以验证它是否由 Microsoft 发行。右键点击该文件,选择“属性”并查看“数字签名”标签,确保签名由 Microsoft 或 Windows 官方发行。
  • 文件损坏或丢失:如果 lpk.dll 文件丢失或损坏,系统可能会在启动或运行多语言功能时遇到问题。在这种情况下,您可以尝试通过系统文件检查工具(sfc /scannow)修复损坏的文件,或者从其他健康的 Windows 系统中复制该文件。

5. 常见问题:

  • 错误消息:如果 lpk.dll 文件缺失或损坏,用户可能会遇到类似于 “lpk.dll 缺失” 或 “无法找到 lpk.dll” 的错误消息。这时可以通过修复 Windows 系统文件或重新安装操作系统来解决问题。
  • 性能问题:虽然 lpk.dll 本身不会直接影响系统性能,但与多语言支持相关的功能可能会增加系统负担。如果您不需要使用多语言功能,可以选择删除或禁用某些语言包,以提高系统的响应速度。

6. 总结:

lpk.dll 是 Windows 操作系统中的一个核心组件,负责支持多语言显示和本地化功能。它帮助操作系统和应用程序根据用户的语言和地区设置正确显示内容。作为系统文件,通常情况下它是安全的,但如果文件位置异常或数字签名不正确,可能需要进一步检查。


C:\Windows\System32\lpk.dll 是 Windows 操作系统中处理本地化和多语言功能的关键库文件。它涉及的底层原理包括 Windows 操作系统的语言包管理、国际化 (Internationalization, i18n) 和本地化 (Localization, l10n) 机制,以及支持多语言显示和语言切换的功能。

以下是 lpk.dll 的底层原理和工作机制:

1. 本地化与国际化机制

  • 国际化 (i18n):是指设计系统时考虑到支持不同语言、地区和文化的能力,确保软件能够适应不同语言环境和字符集。Windows 通过多种技术实现这一点,例如 Unicode 字符集和语言包的支持。

  • 本地化 (l10n):是指针对特定区域或语言的内容修改,包括日期格式、货币符号、界面翻译等,通常是在国际化支持的基础上进行的具体实现。

2. lpk.dll 的工作原理

lpk.dll 的功能涉及本地化和多语言显示的具体实现,主要通过以下几个底层机制工作:

2.1 语言包管理

  • Windows 操作系统通过语言包来支持多种语言界面和格式设置,lpk.dll 是处理这些语言包的关键组件。每个语言包都包含了翻译的界面文本、日期和时间格式、货币格式等。
  • 当用户选择某种语言或地区设置时,lpk.dll 会根据当前系统设置加载对应的语言包,并通过动态链接库文件的方式将翻译资源注入到操作系统和应用程序的显示界面中。

2.2 Unicode 支持

  • lpk.dll 负责通过 Unicode 字符集来支持全球多种语言的字符集。Windows 使用 Unicode 来确保可以处理各种语言中的字符,尤其是那些非拉丁字符集(如中文、日文、阿拉伯文等)。
  • Unicode 字符集能统一不同语言的字符处理规则,lpk.dll 会根据当前语言的要求,加载相应的字符渲染方案(例如从右到左的书写方式,或是复杂的字体排版)。

2.3 资源管理与替换

  • lpk.dll 在加载语言包时,具体的界面资源会被替换。例如,Windows 的系统对话框、提示消息、文件资源管理器等界面的文本内容会根据所选的语言进行动态替换。
  • 这一过程基于系统中定义的语言资源文件(如 .mui 文件,微软用户界面文件)。这些文件中存储了与操作系统界面相关的文本内容,lpk.dll 会根据当前语言配置选择并加载相应的资源。

2.4 区域设置(Locale)支持

  • lpk.dll 还支持 Windows 的区域设置机制。区域设置不仅包括语言选择,还包括其他地区相关的格式设置(如日期、时间、货币、数字格式等)。
  • Windows 使用 locale 来定义这些设置,lpk.dll 会根据系统的区域设置自动调整系统显示的格式。例如,如果用户选择了美国区域设置,日期会以 MM/dd/yyyy 格式显示;如果选择了中国区域设置,日期则会以 yyyy年MM月dd日 格式显示。

3. 与操作系统的集成

lpk.dll 和操作系统的多语言支持机制紧密集成,尤其是在以下几个方面:

3.1 语言切换

  • 用户可以通过 Windows 的“语言”设置界面切换操作系统的显示语言。lpk.dll 会根据用户的选择动态加载相应的语言包,并在后台进行语言资源的替换。
  • 这项功能是通过 Windows 多语言架构中的“语言包管理器”来实现的,lpk.dll 作为这一机制的组成部分,负责确保语言包的正确加载和资源更新。

3.2 系统界面显示

  • 操作系统中许多界面元素(如系统提示、对话框、菜单、按钮等)都需要根据语言设置进行动态翻译。lpk.dll 会根据语言包中的翻译资源,实时替换这些文本。
  • Windows 的 UI(用户界面)组件和 API(应用程序接口)通过调用 lpk.dll 中的函数来获取本地化文本,从而显示给用户。例如,消息框的标题和内容、系统通知、工具提示等都需要 lpk.dll 进行动态本地化处理。

3.3 字体与渲染

  • 对于非拉丁语言(如汉字、阿拉伯字母、俄语等),Windows 使用字体渲染引擎来确保正确显示这些字符。lpk.dll 与字体渲染引擎(如 DirectWrite)协作,确保文本按语言规则正确显示。
  • 此外,lpk.dll 还涉及右到左书写、竖排文本等复杂的排版需求,尤其是在阿拉伯语、希伯来语和中文中,字符的渲染和排版有特殊要求。

4. 语言包的安装和管理

  • Windows 提供了语言包的安装和管理功能,用户可以在“语言设置”中添加和删除语言包。lpk.dll 会在后台处理这些操作,确保安装的语言包能够正确加载,并在用户切换语言时提供适当的支持。

  • 语言包本身是由一组 .cab 文件组成,这些文件存储了翻译文本、系统界面资源、字体文件等。通过 Windows 更新或手动下载,用户可以安装额外的语言包。

5. 性能优化

  • lpk.dll 在操作系统中属于一个相对轻量的动态链接库,它通常只在需要时加载,比如用户切换语言时或系统界面中需要显示特定语言的文本时。为了避免性能损失,系统会在内存中缓存语言资源,减少频繁的加载和卸载。

  • lpk.dll 并不会主动影响系统的性能,但如果系统有大量的语言包和区域设置,这可能会增加一些资源占用,特别是在多语言环境下。

6. 与其他组件的协作

  • lpk.dll 和其他 Windows 组件,如 user32.dll(用户界面显示)、gdi32.dll(图形设备接口)以及 kernel32.dll(核心操作系统功能)紧密合作,共同支持操作系统的多语言特性。

  • 特别是在桌面应用程序中,开发人员可以调用 Windows API 来实现多语言支持,这些 API 会调用 lpk.dll 来加载适当的本地化资源。

总结

lpk.dll 是 Windows 系统中处理本地化和多语言支持的核心组件之一,它通过动态加载和替换语言资源来实现操作系统和应用程序界面的语言切换、字符渲染、日期时间格式调整等功能。通过与其他系统组件(如区域设置、字体渲染引擎、语言包管理器等)的协作,lpk.dll 为用户提供了无缝的多语言支持。


C:\Windows\System32\lpk.dll 是 Windows 操作系统中的一部分,负责支持系统的多语言功能,包括本地化和国际化支持。该动态链接库 (DLL) 文件本身依赖于多个其他系统组件和文件,以便正常工作和提供所需的功能。

1. 依赖的核心系统文件

在 Windows 中,lpk.dll 主要与以下几类文件和组件相关联:

1.1 Kernel32.dll

  • 功能kernel32.dll 提供基本的操作系统功能,如内存管理、进程管理和输入输出操作。
  • 与 lpk.dll 的关系lpk.dll 依赖 kernel32.dll 提供的低级系统服务,尤其是在语言包的加载、内存管理和多线程支持方面。

1.2 User32.dll

  • 功能user32.dll 负责 Windows 用户界面(UI)的管理,包括窗口创建、消息处理、用户输入等。
  • 与 lpk.dll 的关系lpk.dll 与 user32.dll 协作,负责将多语言界面文本动态加载到系统 UI 中,例如在不同语言环境下动态显示文本和界面元素。

1.3 Gdi32.dll

  • 功能gdi32.dll 负责图形设备接口(GDI)的处理,提供绘制图形、文本、窗口元素等功能。
  • 与 lpk.dll 的关系lpk.dll 依赖 gdi32.dll 来渲染多语言文本,尤其是对于非拉丁字符(如中文、阿拉伯语等)的显示和排版。

1.4 Ntdll.dll

  • 功能ntdll.dll 提供对操作系统内核和 Windows NT 内部 API 的访问,支持低级操作,如系统调用、异常处理等。
  • 与 lpk.dll 的关系lpk.dll 会依赖 ntdll.dll 提供的一些底层服务,尤其是在文件操作和系统资源管理方面。

1.5 Msvcrt.dll

  • 功能msvcrt.dll 是 Microsoft C 运行时库,提供标准 C 函数的支持(如内存分配、字符串处理等)。
  • 与 lpk.dll 的关系lpk.dll 可能会依赖于 msvcrt.dll 中的函数来执行字符串操作和字符编码转换。

2. 与语言包相关的依赖

lpk.dll 本身并不包含多语言文本,它通过语言包(Language Packs)提供支持。每个语言包包含的资源文件包括翻译、字体、日期格式等内容。以下是 lpk.dll 依赖的语言包文件和资源:

2.1 .mui 文件(Multilingual User Interface 文件)

  • 功能.mui 文件是 Windows 系统的多语言资源文件,存储了本地化的用户界面元素和文本内容。
  • 与 lpk.dll 的关系lpk.dll 会根据用户选择的语言,加载和使用特定语言包中的 .mui 文件,以便在操作系统中显示正确的本地化界面。

2.2 语言包(CAB 文件)

  • 功能:语言包通常以 .cab 文件的形式存在,包含了特定语言的各种资源,包括翻译文本、字体、日期格式等。
  • 与 lpk.dll 的关系lpk.dll 需要从这些语言包中提取并使用资源,确保操作系统或应用程序能够显示正确的语言内容。

2.3 字体文件

  • 功能:字体文件是操作系统用来渲染不同语言文本的资源,特别是对于中文、阿拉伯语、日语等非拉丁字符集的语言。
  • 与 lpk.dll 的关系lpk.dll 会与字体文件协作,确保不同语言的字符能够正确显示,特别是在支持竖排文本、复杂字符渲染等方面。

3. 可能的外部依赖

除了 Windows 操作系统的核心文件,lpk.dll 还可能依赖某些外部库或组件,特别是当系统安装了特定的语言包或进行自定义语言设置时:

3.1 Microsoft Visual C++ Redistributable

  • 在某些情况下,lpk.dll 可能依赖于 Microsoft Visual C++ Redistributable 包中的运行时库来支持某些函数调用,尤其是对于字符编码、字符串处理等功能。

3.2 DirectWrite 或其他字体渲染库

  • 对于高效的文本渲染,特别是对于复杂的语言和字符集,lpk.dll 可能依赖于 DirectWrite 或其他字体渲染库来实现对多语言字符的渲染。

3.3 Windows Update

  • lpk.dll 的某些功能可能依赖于 Windows Update 自动下载并安装的语言包更新或修补程序。如果系统启用了某些语言包,可能需要更新特定的 .mui 或 .cab 文件。

4. 总结

lpk.dll 主要依赖于 Windows 系统中的一些核心动态链接库(如 kernel32.dlluser32.dllgdi32.dll 等),以及与语言相关的资源文件(如 .mui 文件、语言包和字体文件)。这些文件共同协作,确保 Windows 系统能够实现多语言支持、界面本地化和字符渲染等功能。


lpk.dll 是 Windows 操作系统中的一个动态链接库(DLL)文件,通常与 Windows 的语言支持包相关。该文件一般用于支持多种语言的字符集、输入法等,尤其是在需要支持多语言环境的情况下。然而,由于它是一个常见的文件名,攻击者有时会利用这一点来隐藏恶意软件。因此,lpk.dll 可能被恶意软件伪装成正常的系统文件。

1. 正常的 lpk.dll 文件

  • lpk.dll 文件通常位于 C:\Windows\System32\ 目录下,负责处理语言包和区域设置的相关功能。它在 Windows 中是合法的系统文件,并不应该引起安全问题。
  • 该文件主要与 Windows 的多语言支持和字符集转换相关,帮助 Windows 系统在不同地区和语言环境下正确显示文字和符号。

2. 恶意软件伪装成 lpk.dll

  • 恶意软件作者有时会利用这个常见的文件名来伪装成合法文件。例如,恶意软件可能将自身命名为 lpk.dll,并将其放置在与系统文件不同的位置,如 C:\Windows\Temp\ 或 C:\Users\<用户名>\AppData\ 目录。
  • 这种伪装方式有时会让用户难以识别恶意文件,尤其是在没有使用防病毒软件或未定期进行系统扫描的情况下。

3. 已知的恶意软件与 lpk.dll 相关的记录

一些病毒和恶意软件利用 lpk.dll 文件进行感染和传播。以下是一些与 lpk.dll 文件相关的已知恶意软件案例:

  • Trojan:Win32/Inject:这个木马病毒常常伪装成系统文件,使用类似 lpk.dll 这样的名字以避免被检测。它会在系统中悄悄运行,导致各种恶意操作,如窃取用户信息、控制计算机或传播其他恶意软件。

  • Downloader: 有些恶意下载工具(Downloader)会将 lpk.dll 作为下载器的一部分,利用此文件下载并执行其他恶意软件。这些下载器通常会从远程服务器下载额外的恶意负载,进一步危害系统安全。

  • Trojan:Win32/FlawedAmmyy:该木马病毒有时伪装成合法的 Windows 文件,包括 lpk.dll,并通过各种社会工程手段诱使用户运行它。感染后,它会使黑客能够远程控制受感染的计算机,进行进一步的恶意活动。

4. 如何判断 lpk.dll 是否是恶意文件?

以下是一些检查 lpk.dll 文件是否为恶意文件的步骤:

  • 文件位置:检查 lpk.dll 的文件位置。合法的 lpk.dll 文件应位于 C:\Windows\System32\ 目录下。如果该文件位于其他位置(例如,Temp 或用户的 AppData 目录),则有可能是恶意软件伪装的文件。

  • 文件大小和属性:比较文件的大小和属性。合法的 lpk.dll 通常具有特定的大小和版本信息。如果文件大小异常或没有正确的版本信息,可能是恶意文件。

  • 文件数字签名:查看文件的数字签名。合法的 lpk.dll 文件应由 Microsoft 签名。如果文件没有签名,或者签名无效,这可能是恶意文件的一个迹象。

  • 病毒扫描:使用可靠的防病毒软件(例如 Windows Defender、Bitdefender、Kaspersky 等)扫描 lpk.dll 文件。如果防病毒软件检测到该文件为恶意软件,应该立即将其隔离并删除。

  • 系统行为异常:如果系统突然变得缓慢,出现频繁的崩溃或意外重启,或者你看到与正常操作无关的弹出窗口和广告,可能是恶意软件的迹象。此时应该使用系统监控工具检查 lpk.dll 是否与这些问题相关。

5. 处理方法

  • 隔离和删除:如果你确定 lpk.dll 是恶意文件,可以使用杀毒软件将其隔离或删除。强烈建议使用具有实时保护功能的防病毒软件进行扫描。

  • 修复系统文件:如果你不确定 lpk.dll 是否是恶意文件,或者删除后可能导致系统问题,可以使用 Windows 的系统文件检查工具(SFC)进行修复。你可以打开命令提示符并运行以下命令:

    Copy Code
    sfc /scannow

    这将扫描并修复系统文件,确保 lpk.dll 和其他重要系统文件的完整性。

  • 重新安装操作系统:如果恶意软件对系统造成了严重破坏,且无法清除,重新安装操作系统是一个彻底解决问题的方法。

总结

  • lpk.dll 文件是 Windows 操作系统中的一个合法文件,用于多语言支持和字符集转换。
  • 恶意软件可能会伪装成 lpk.dll 文件,或者通过该文件传播病毒和木马。
  • 通过检查文件位置、数字签名和使用防病毒软件扫描,可以判断 lpk.dll 是否为恶意文件。
  • 如果怀疑文件被感染,及时隔离并删除,必要时修复系统文件或重装操作系统。

在维护计算机安全时,始终建议保持操作系统和防病毒软件的更新,并定期进行全盘扫描。


 

posted @ 2024-12-27 22:00  suv789  阅读(1404)  评论(0)    收藏  举报