要全局更改win11系统界面字体,需修改注册表hkey_local_machine\software\microsoft\windows nt\currentversion\fontsubstitutes中的ms shell dlg、ms shell dlg 2和fixedsys映射值,指向已安装字体的精确显示名,修改后须注销或重启资源管理器生效。

想让Win11整个系统界面(包括标题栏、菜单、对话框、资源管理器等)都用上你选中的新字体,而不是只在Word或网页里生效——这需要绕过系统限制,直接干预底层字体映射机制。
确认系统是否允许更改默认字体
打开注册表编辑器(Win+R → 输入 regedit → 回车),导航至 【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts】。这里只列出已安装字体的显示名与文件名映射关系,【不控制系统UI实际使用的字体】。继续往下看,别在这里删改任何项。
再打开 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes。这个键值才是关键:它定义了“当系统请求某类逻辑字体(如MS Shell Dlg)时,实际调用哪个物理字体”。默认情况下,MS Shell Dlg → Microsoft Sans Serif;MS Shell Dlg 2 → Segoe UI。这就是你要动的地方。
替换核心逻辑字体映射
在 FontSubstitutes 项下,双击右侧的 MS Shell Dlg 字符串值,将其数据改为你想设为默认无衬线体的字体名(例如:Noto Sans CJK SC)。注意:必须与字体在系统中注册的**精确显示名称**完全一致,大小写敏感,不能带扩展名,也不能加引号。
同样修改 MS Shell Dlg 2,建议设为同一家族的中粗体或常规体(如 Noto Sans CJK SC Medium),否则对话框按钮文字可能变细发虚。
如果还想改等宽字体(比如命令行、记事本默认字体),新增一个字符串值,名称填 FixedSys,数据填你选的等宽字体全名(如:JetBrains Mono)。
安装并验证字体文件
方法一:直接拖入安装
将 .ttf 或 .otf 字体文件全选 → 右键 → “为所有用户安装”。这会把字体复制进 C:\Windows\Fonts 并注册到系统。
方法二:命令行静默安装(适合批量)
以管理员身份运行 PowerShell,执行:
Get-ChildItem "C:\MyFonts\*.ttf" | ForEach-Object { $font = $_.FullName; & "$env:windir\Fonts\fontinst.exe" /install "$font" }。注意 fontinst.exe 需提前从合法渠道获取或使用系统自带的 Add-Font.ps1 脚本替代。
【必须重启资源管理器或注销重登录,新映射才生效】。仅刷新桌面或重启应用无效。
恢复原始设置(应急用)
第一步:打开注册表编辑器 → 定位到 FontSubstitutes 键。
第二步:右键点击 FontSubstitutes → 选择“导出”,保存为 backup_fontsub.reg 备份当前状态。
第三步:双击运行以下内容的 .reg 文件即可一键还原:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"MS Shell Dlg"="Microsoft Sans Serif"
"MS Shell Dlg 2"="Segoe UI"
"FixedSys"="Lucida Console"











