目前很多软件都限制单实例,大多数软件都是用Mutex来实现的 而这个东西咱们可以用handle去干掉它,并且不影响使用。 钉钉也是一样的步骤 www.cppcns.com不过Mutex的名字不一样 我测试的钉钉的是:
”\Sessions\1\BaseNamedObjects\{{239B7D43-86D5-4E5C-ADE6-CEC42155B475}}DingTalk“
这里要借助微软的两个软件 分别是:procexp handle
接下来开始正文:
首先咱们要手动判断下Mutex是哪个。
这就要用到procexp.exe了 以管理员身份运行该程序。
选中微信进程 按Ctrl+L 就会出现图中下半部分。
在软件中我们可以找type 是Mutant 的 然后右键有个关闭 一个一个试 这里我已经试过了就不演示了 直接给大家
name \Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex
到这一步之后 这个工具的使命就完成了!接下来该使用handle了 在cmd 输入下面的代码
handle -a -u -p 12668 "\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex"
然后我们在去关闭下这个句柄就可以了
handle -p 12668 -c 460 -y
注意:这句代码需要管理员权限
然后我们再去打开微信就可以了。
下面我们用python去实现下
代码可能和分析不太一样 因为
"\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex"
中的1 有时候会变成其他数字,所以我用了匹配规则
把代码和hwww.cppcns.comandle.exe 放在一个目录下
import os import re import psutil def get_pid(name): """ 获取所有的微信进程 """ process_list = psutil.pids() pids = [] for pid in process_list: if psutil.Process(pid).name() == name: pids.append(pid) return pids def more_open(path): pids = get_pid("WeChat.exe") for pid in pids: #遍历所有微信的pid 把 Mutex都干掉 cmd = f"handle -a -u -p {pid}" with os.popen(cmd) a编程客栈s f: result = f.read() search_result = "" for i in result.split("\n"): if i.strip(): if i.strip().endswith("_WeChat_App_Instance_Identity_Mutex_Name"): search_result += i if not search_result: os.startfile(path) continue re_result = re.findall('(\d+): Mutant', search_result, re.S) #上面这个循环是匹配 Mutex的handle if re_result: for _id in re_result: os.system(f'handle -p {pid} -c {编程客栈_id} -y') os.startfile(path) path = "D:\Program Files (x86)\Tencent\WeChathttp://www.cppcns.com\WeChat.exe" more_open(path)
到此这篇关于python分析实现微信钉钉等软件小号多开的文章就介绍到这了,更多相关python 微信多开内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
精彩评论