跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Shell / BashWeChat大前端

macOS 微信双开/多开实战指南(支持 4.X+)

macOS 环境下利用 Shell 脚本实现微信多开,核心在于复制应用包并修改 Bundle ID 及重新签名。脚本支持一键克隆、多开实例管理及更新后自动重建。手动操作需配合 codesign 与 PlistBuddy 工具。建议定期执行重建命令以适配微信版本更新,确保多开稳定性。

忘忧发布于 2025/10/21更新于 2026/4/231 浏览
macOS 微信双开/多开实战指南(支持 4.X+)

macOS 微信双开/多开实战指南

在 macOS 环境下,通过修改应用包标识符和重新签名,可以实现微信的多实例运行。下面分享一套基于 Shell 脚本的自动化方案,支持一键克隆、多开及更新后重建。

准备工作

确保系统已安装官方微信(路径通常为 /Applications/WeChat.app),并确认终端拥有 sudo 权限。我们需要用到以下工具:

  • ditto
  • codesign
  • xattr
  • /usr/libexec/PlistBuddy

风险提示:本方法仅供学习研究使用。操作涉及系统底层修改,请自行评估风险。若因操作导致账号异常或系统问题,后果自负。

创建并配置脚本

我们不需要手动执行复杂的命令,只需编写一个管理脚本即可。

1. 新建文件

在终端进入用户主目录并创建脚本文件:

cd ~
touch wechat-2.sh
2. 编辑脚本

你可以用任何编辑器打开它。推荐 VS Code 或系统自带的文本编辑器:

open -e wechat-2.sh
# 或者使用 nano
nano wechat-2.sh

将下方的完整脚本内容粘贴进去保存。

3. 赋予执行权限
chmod +x wechat-2.sh

此时脚本已就绪,接下来就可以通过参数控制多开了。

脚本功能说明

脚本封装了核心逻辑,常用指令如下:

  • 自动双开:复制一份微信并重命名,同时启动两个窗口。
    sudo ./wechat-2.sh auto --force
    
  • 多开指定数量:例如生成 3 个副本。
    sudo ./wechat-2.sh multi 3 --force
    
  • 更新后重建:微信升级后原副本会失效,此命令会自动检测并重新克隆。
    sudo ./wechat-2.sh rebuild --force
    
  • 停止进程:关闭所有微信相关进程。
    sudo ./wechat-2.sh kill
    

完整脚本代码

以下是经过格式化的完整脚本,包含 Bundle ID 修改、去隔离属性及重新签名逻辑:

#!/bin/bash
# macOS WeChat Multi Instance Script
# Usage:




 -euo pipefail


RED=
GREEN=
YELLOW=
BLUE=
NC=


WECHAT_APP=
DEST_DIR=
BASE_APP_NAME=
FORCE=0

() {
     -v  > /dev/null 2>&1 || {
         -e 
         1
    }
}

 cmd  ditto codesign xattr /usr/libexec/PlistBuddy; 
    require_cmd 


() {
     [ ! -d  ]; 
         -e 
         1
    
     -e 
}

() {
     dest=
     [ -d  ]; 
         [  -eq 1 ]; 
              -rf 
        
             -p  yn
            [[  =~ ^[Yy]$ ]] &&   -rf 
        
    
}

() {
     app_name=
     ditto  
}

() {
     app_name=
     info_plist=
     new_id=
     /usr/libexec/PlistBuddy -c  
     /usr/libexec/PlistBuddy -c   || 
}

() {
     app_name=
     dest=
      -rf  || 
     xattr -dr com.apple.quarantine  || 
     codesign --force --deep --sign - --timestamp=none 
}

() {
    
     app_name  ; 
        open -n 
         1
    
}

() {
    pkill -f  || 
}

() {
      | grep  || 
}

() {
      
        setup)
            check_wechat
            remove_app 
            copy_wechat 
            modify_bundle_id 
            resign_app 
            ;;
        start)
            start_apps  
            ;;
        auto)
            check_wechat
            remove_app 
            copy_wechat 
            modify_bundle_id 
            resign_app 
            start_apps  
            ;;
        multi)
             count=
            check_wechat
             i  $( 1 ); 
                 app_name=
                remove_app 
                copy_wechat 
                modify_bundle_id 
                resign_app 
            
            start_apps $( i  $( 1 );   ; )
            ;;
        rebuild)
            check_wechat
             -e 
             apps=$(list_existing_apps)
             app_name  ; 
                 -e 
                remove_app 
                copy_wechat 
                modify_bundle_id 
                resign_app 
            
             -e 
            ;;
        -k|)
            kill_wechat
            ;;
        -h|--|)
             
            ;;
        *)
             -e 
             1
            ;;
    
}

 arg  ; 
    [[ == ]] && FORCE=1


main 
# sudo ./wechat-2.sh auto --force
# sudo ./wechat-2.sh multi 3 --force # 多开 3 个副本
# sudo ./wechat-2.sh rebuild --force # 更新后自动重建所有副本
set
# 颜色定义
'\033[0;31m'
'\033[0;32m'
'\033[1;33m'
'\033[0;34m'
'\033[0m'
# 默认路径
"/Applications/WeChat.app"
"/Applications"
"小绿书"
require_cmd
command
"$1"
echo
"${RED}缺少命令:$1${NC}"
exit
for
in
do
"$cmd"
done
check_wechat
if
"$WECHAT_APP"
then
echo
"${RED}未找到微信:$WECHAT_APP${NC}"
exit
fi
echo
"${GREEN}✓ 检测到微信已安装${NC}"
remove_app
local
"$DEST_DIR/$1"
if
"$dest"
then
if
$FORCE
then
sudo
rm
"$dest"
else
read
"是否删除并重新创建 $1? (y/n): "
$yn
sudo
rm
"$dest"
fi
fi
copy_wechat
local
$1
sudo
"$WECHAT_APP"
"$DEST_DIR/$app_name"
modify_bundle_id
local
$1
local
"$DEST_DIR/$app_name/Contents/Info.plist"
local
"com.tencent.xinWeChat.dual.$RANDOM"
sudo
"Set :CFBundleIdentifier $new_id"
"$info_plist"
sudo
"Set :CFBundleDisplayName $app_name"
"$info_plist"
true
resign_app
local
$1
local
"$DEST_DIR/$app_name"
sudo
rm
"$dest/Contents/_CodeSignature"
true
sudo
"$dest"
true
sudo
"$dest"
start_apps
shift
for
in
"$@"
do
"$DEST_DIR/$app_name"
sleep
done
kill_wechat
"WeChat"
true
list_existing_apps
ls
"$DEST_DIR"
"^$BASE_APP_NAME[0-9]*\.app$"
true
main
case
"${1:-}"
in
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"WeChat.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"${BASE_APP_NAME}.app"
"WeChat.app"
"${BASE_APP_NAME}.app"
local
${2:-2}
for
in
seq
"$count"
do
local
"${BASE_APP_NAME}${i}.app"
"$app_name"
"$app_name"
"$app_name"
"$app_name"
done
for
in
seq
"$count"
do
echo
"${BASE_APP_NAME}${i}.app"
done
echo
"${BLUE}检测到系统更新或微信更新,正在重建副本...${NC}"
local
for
in
$apps
do
echo
"${YELLOW}重建 $app_name ...${NC}"
"$app_name"
"$app_name"
"$app_name"
"$app_name"
done
echo
"${GREEN}✓ 所有副本已重新生成${NC}"
kill
help
""
echo
"用法:$0 {setup|start|auto|multi N|rebuild|kill} [--force]"
echo
"${RED}未知参数:$1${NC}"
exit
esac
for
in
"$@"
do
$arg
"--force"
done
"$@"

手动操作流程(可选)

如果不希望使用脚本,也可以手动执行关键步骤。注意路径中的空格处理:

  1. 复制应用
    sudo cp -R /Applications/WeChat.app /Applications/小绿书.app
    
  2. 修改唯一标识符
    sudo /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier net.maclub.wechat" /Applications/小绿书.app/Contents/Info.plist
    
  3. 重新签名
    sudo codesign --force --deep --sign - /Applications/小绿书.app
    

更新维护

微信每次更新都会覆盖 /Applications/WeChat.app,导致之前的副本失效。此时无需重新写脚本,直接运行重建命令即可:

sudo ./wechat-2.sh rebuild --force

脚本会自动查找所有 小绿书 N.app 副本,删除旧版并重新克隆最新版,保持 Bundle ID 独立且可正常登录。

总结

这套方案的核心在于利用 codesign 绕过签名校验,配合修改 Info.plist 中的 CFBundleIdentifier 实现多实例共存。脚本化操作能显著降低重复劳动,特别是应对版本更新时,rebuild 功能非常实用。日常使用中建议定期清理无用副本,避免占用过多磁盘空间。

目录

  1. macOS 微信双开/多开实战指南
  2. 准备工作
  3. 创建并配置脚本
  4. 1. 新建文件
  5. 2. 编辑脚本
  6. 或者使用 nano
  7. 3. 赋予执行权限
  8. 脚本功能说明
  9. 完整脚本代码
  10. macOS WeChat Multi Instance Script
  11. Usage:
  12. sudo ./wechat-2.sh auto --force
  13. sudo ./wechat-2.sh multi 3 --force # 多开 3 个副本
  14. sudo ./wechat-2.sh rebuild --force # 更新后自动重建所有副本
  15. 颜色定义
  16. 默认路径
  17. 手动操作流程(可选)
  18. 更新维护
  19. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • 华为 P30 系列从鸿蒙 4.2 降级至 EMUI 9 实战指南
  • iOS App Store 上架全流程:打包、上传与审核指南
  • 通义 DeepResearch 开源:轻量级 AI 代理性能对标 OpenAI
  • Node.js+Vue 在线票务系统设计与功能实现
  • Python 递归实现任意进制转换
  • PyTorch 时序预测 Dataloader 构建:GRU 与 Shuffle 机制解析
  • LeetCode 720. 字典中最长单词(Python 实现)
  • Android 开发中组件化的核心价值与架构实践
  • 2024 汽车 AI 大模型 TOP10 深度解析:技术路线与应用场景
  • 两数之和:暴力枚举与哈希表优化
  • 前端开发必备:vue-canonical-encyclopedia 正则库使用详解
  • H5 本地存储:localStorage 与 sessionStorage 用法及区别
  • Kotlin 异常处理核心:Try 表达式、Nothing 类型与 Java 交互
  • 推荐一位拥有七年经验的互联网运营从业者
  • Python 数据分析:如何正确查看生成的 SQLite 数据库文件
  • Vue3 项目实战:Axios 基础封装与接口调用
  • WinForm DataGridView 表头添加 CheckBox 实现全选功能
  • 分糖果问题:如何最大化获得糖果的种类数
  • LeetCode 下一个排列算法:C 语言实战解析
  • 大疆测试岗实习面试全流程复盘

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online