生产环境下自定义Electron进程名称的实现方法
Electron进程名称自定义(Windows平台)
当然可以实现类似VS Code、Discord的进程区分效果,以下是几种可行的方案:
一、主进程名称自定义
打包阶段直接修改主可执行文件的命名,以electron-builder为例,在项目的package.json中配置:
{ "build": { "win": { "artifactName": "${productName}-主进程.exe" } } }
打包后主进程的可执行文件会带上“主进程”标识,在任务管理器中一眼就能区分。
二、渲染/子进程添加标识
1. 设置进程标题
在渲染进程或preload脚本中直接修改进程标题,任务管理器的「详细信息」标签中开启「标题」列后就能看到:
// preload.js 或渲染进程代码 process.title = "你的应用名 - 主窗口渲染进程";
如果需要在主进程中统一配置,可以在创建BrowserWindow时传递自定义参数,再在preload中读取设置:
// 主进程创建窗口 const mainWindow = new BrowserWindow({ webPreferences: { preload: path.join(__dirname, 'preload.js'), additionalArguments: ['--window-role=main-content'] } }); // preload.js const args = process.argv.slice(2); const windowRole = args.find(arg => arg.startsWith('--window-role=')).split('=')[1]; process.title = `你的应用名 - ${windowRole}渲染进程`;
2. 调用Windows API修改进程显示名
如果需要直接修改任务管理器中显示的可执行文件名(而非标题),可以借助node-ffi-napi调用Windows系统API实现,示例代码:
const ffi = require('ffi-napi'); const kernel32 = ffi.Library('kernel32', { 'GetCurrentProcess': ['pointer', []], 'SetProcessImageFileNameW': ['bool', ['pointer', 'wchar*']] }); // 在目标进程中执行 const hProcess = kernel32.GetCurrentProcess(); kernel32.SetProcessImageFileNameW(hProcess, '你的应用名 - GPU进程.exe');
注意:这种方法需要应用以管理员权限运行,且仅支持Windows平台。
三、优化进程分组
通过app.setAppUserModelId设置唯一的应用模型ID,能让任务管理器将同属你的应用的进程自动分组,即使名称相似也能清晰区分:
// 主进程ready后执行 app.whenReady().then(() => { app.setAppUserModelId('com.yourcompany.yourapp'); });
内容的提问来源于stack exchange,提问作者Colas
相关产品推荐
相关产品推荐

