SystemInformer 汉化实操指南:把系统监控工具界面改成中文的完整流程
2026/9/11 8:13:59 网站建设 项目流程

SystemInformer 汉化实操指南:把系统监控工具界面改成中文的完整流程

【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer

SystemInformer 是一款免费开源的系统监控工具,但默认界面全是英文。本文带你逐项完成中文配置:替换语言标识、翻译资源字符串、修正源码里的硬编码文本,最后编译验证。跟着做一遍,大约一小时后就能得到一个中文的监控界面。

前置条件

  • 目标读者:在 Windows 上用过 SystemInformer、会基本命令行操作的开发者
  • 装有 Visual Studio 2022(含 C++ 工作负载),或 CMake ≥ 3.30 加 MSVC 工具链
  • 克隆仓库并进入根目录:git clone https://gitcode.com/GitHub_Trending/sy/systeminformer
  • 预计耗时:约 60 分钟(含编译)

模块速览

  • SystemInformer/主程序:对话框和菜单文本大多写在SystemInformer.rc里,少数页面名直接硬编码在 C 源码中
  • plugins/插件集:每个插件有独立的.rc资源文件和自己的语言声明
  • cmake/toolchain/构建工具链:提供 MSVC 编译器,源码里的中文字符要靠它编译生效

分步实操

替换主程序的语言标识行

这一步先让编译器知道资源按简体中文处理,后面的字体与编码选择才会走中文路径。

打开SystemInformer/SystemInformer.rc,改动在第 20 行附近。注意LANGUAGE上方的#if宏条件要一起换;版本资源SystemInformer/version.rc同样处理:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ZHCS) // 原为 AFX_TARG_ENU LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED // 原为 LANG_ENGLISH, SUBLANG_ENGLISH_US

确认方式:重新构建后,用资源查看器查看可执行文件的资源段,语言应显示为简体中文(zh-CN)。

语言标识就位后,开始真正的翻译工作:对话框文字就写在资源文件里。

把资源文件的对话框文字换成中文

这一步解决所有对话框的窗口标题和按钮文本。

打开SystemInformer/SystemInformer.rc,以第 358 行附近的僵尸进程对话框为例。改 CAPTION 和按钮文字,后面的控件 ID 和坐标保持不变:

CAPTION "Zombie Processes" PUSHBUTTON "Terminate",IDC_TERMINATE,115,200,50,14 PUSHBUTTON "Save...",IDC_SAVE,170,200,50,14

改成:

CAPTION "僵尸进程" PUSHBUTTON "结束",IDC_TERMINATE,115,200,50,14 PUSHBUTTON "保存...",IDC_SAVE,170,200,50,14

想保留键盘快捷键时,给快捷字符前加&(如&Scan)。确认方式:运行 exe 打开该对话框,标题和按钮已是中文。

还有部分文字根本不在资源文件里,而是直接写在 C 代码中。

翻译源码里硬编码的页面名

这一步解决主窗口左侧导航的页面名称。

SystemInformer/mainwnd.c中搜索PhMwpCreateInternalPage,第 656 行附近有三处:

PhMwpCreateInternalPage(L"Processes", 0, PhMwpProcessesPageCallback); PhMwpCreateInternalPage(L"Services", 0, PhMwpServicesPageCallback); PhMwpCreateInternalPage(L"Network", 0, PhMwpNetworkPageCallback);

只改第一个参数:L"Processes"L"进程"L"Services"L"服务"L"Network"L"网络"L前缀必须保留,否则会被按窄字符串处理导致乱码。确认方式:左侧导航的三个页面名显示为中文。

只改主程序的话,插件对话框还是英文的。

统一所有插件的语言标识

这一步解决自带插件的对话框语言。

每个插件的.rc(第 19 行附近)和version.rc都有独立声明,例如plugins/ExtendedTools/ExtendedTools.rcplugins/DotNetTools/DotNetTools.rcplugins/HardwareDevices/HardwareDevices.rc,内容都是同一行:

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

全部替换为LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED。确认方式:打开任一插件对话框,其资源语言与主程序一致。

文字改完,重新构建后才会真正生效。

编译验证中文版

这一步产出最终可执行程序。

在仓库根目录执行下面两条命令,工具链指向cmake/toolchain/里的 MSVC 配置:

cmake -B build -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain/msvc-amd64.cmake cmake --build build --config Release

也可以直接用 Visual Studio 打开SystemInformer.sln选 Release 构建。内核驱动(KSystemInformer)默认不参与构建,不影响用户态界面。确认方式:运行新的 exe,逐页走一遍主界面,剩余英文处就是漏翻的字符串。

排查与纠错

如果你看到中文变成方框或乱码 → 多半是文件编码与编译器编码不一致,MSVC 默认按系统代码页读源码 → 把改过的.rc.c存为带 BOM 的 UTF-8,或给构建加/utf-8参数,再重新编译。

如果你重新构建后界面还是全英文 → 多半是运行的旧二进制,或构建没包含插件(SI_WITH_PLUGINS默认关闭)→ 先确认可执行文件的时间戳,需要插件时配置阶段加-DSI_WITH_PLUGINS=ON

如果你主程序是中文、某个插件对话框仍是英文 → 多半是漏改了该插件的 LANGUAGE 行,每个插件都是独立声明 → 全局搜索LANG_ENGLISH,把剩余文件逐个改完。

维护与贡献

  • 上游发新版时,先对照新增的对话框和字符串,再重跑一遍「语言标识 + 字符串」的批量替换,跟版成本低
  • 向社区提交:fork 仓库 → 拉分支 → 翻译并验证 → 提交 PR,描述里附上界面前后对比
  • 建议维护一份统一术语表,例如 Handles 统一译「句柄」、Processes 统一译「进程」,主程序与插件用词一致

写在最后

做完这几步,你的 SystemInformer 不再是满屏英文,而是可以逐字读懂的系统监控工具。接下来:构建完把主窗口每个页面过一遍,把漏翻的字符串记成清单,下次再坐下来改就快很多了。🚀

【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询