简介

防止PC端程序多开

前言

昨天,偶然从好朋友老王哪里得知,他的电脑居然可以同时上两个微信号。这倒是引起了我的好奇,他告诉我是这样做的,他写了一个批处理文件,

TASKKILL /F/IM WeChat.exe
start " " "E:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
start " " "E:\Program Files (x86)\Tencent\WeChat\WeChat.exe"

然后直接双击批处理文件,果然能启动两个微信进程,我在想我们能不能把这样的漏洞补上呢, 所以我自己写了一个程序,首先我们要写程序之前要明白,怎么控制程序不能打开两次,做到系统级别的互斥, 可能好多同学说,线程同步问题我倒是随便解决,但是进程同步的问题该怎么解决呢,如果大家对基础比较熟悉的话,就会知道互斥锁Mutex能够解决这样的问题,我们看一下官方文档:

我是这样理解的

•initiallyOwned: 如果initiallyOwned为true,互斥锁的初始状态就是被所实例化的线程所获取,否则实例化的线程处于未获取状态。•name:该互斥锁的名字,在操作系统中只有一个命名为name的互斥锁mutex,如果一个线程得到这个name的互斥锁,其他线程就无法得到这个互斥锁了,必须等待那个线程对这个线程释放。•createNew:如果指定名称的互斥体已经存在就返回false,否则返回true。

所以我在我写的demo程序的入口处。写了这样一段代码

bool mutexCreated;var mutex = new Mutex(true, "MyApp", out mutexCreated);if (mutexCreated){Application.Run(new Form1());}else{MessageBox.Show("该程序已打开");}

我们把程序生成,打开我们的程序两次,第一次能够正常打开,第二次就显示该程序已打开了,

然后我们修改一下多开的批处理文件

TASKKILL /F/IM WindowsFormsApp1.exestart " " "E:\02_blibli\wenz\32Mutex\WindowsFormsApp1\bin\Debug\WindowsFormsApp1.exe"start " " "E:\02_blibli\wenz\32Mutex\WindowsFormsApp1\bin\Debug\WindowsFormsApp1.exe"

发现我们的程序还是只能打开一次,并不能多开,那微信为什么能多开呢?是微信的开发故意留的这样一个漏洞还是技术层面的呢?我还是想不通;但是从技术层面来说,他们有没有可能,是在启动程序的是时候去遍历的进程呢,由于两个程序打开时间间隔太短,以至于第一个程序还没有进程的时候,就打开第二个了,所以就能多开?我只能这样瞎猜,如果有知道的可以告诉我。

我今天就给大家讲了使用互斥锁解决程序多开的问题!

如果大家喜欢我的文章,还麻烦给个关注并点个赞, 希望net生态圈越来越好!

技术群:添加小编微信并备注进群

小编微信:mm1552923

公众号:dotNet编程大全

C#中解决PC端程序多开的问题相关推荐

  1. 微软是如何解决 PC 端程序多开问题的

    前言 在公众号上看到一篇文章<C#中解决PC端程序多开的问题>. 该文作者是通过创建互斥锁Mutex实现的: bool mutexCreated; var mutex = new Mute ...

  2. flexible.js+rem解决pc端适配

    第一步:新建 flexible.js文件 这里默认是10等份,手动改为24,此时1rem=1920/24px即80px.(设计稿是1920px的) (function flexible(window, ...

  3. android 输入法字典_【输入法】向Android端Gboard字典中导入PC端搜狗细胞词库

    [输入法]向Android端Gboard字典中导入PC端搜狗细胞词库 环境 Android 5.1.1 Gboard 8.7.10.272217667-release -armeabi-v7a PC端 ...

  4. 微信多开服务器,PC端微信多开

    PC端微信多开 还有,分身前让我再去找分身的切换公众号,如"微信公众号id":打开该公众号后,微信客服会给您发一条信息,请您关注"微信软件管理":为了有效果,将 ...

  5. 全功能智能车之暂时放弃PC端程序的研究(第十篇)

    唉,PC端的程序太过于杂乱,有很多不同的平台,有不同的语言,有不同的设备,非是我这个半路出家的人所深入的,再之,本人觉得还是做和自己相近的专业比较好,我是做嵌入式的,所以这样以后的上位机我就用安卓来做 ...

  6. 完美电脑PC端微信多开实现及源码

    引用链接:http://www.ppsbbs.tech/?thread-22.htm 已更新,支持最新版本的微信版本 微信多开实现有很多种方法: 1.IOS端微信都开,需越狱 2.Android端微信 ...

  7. 如何在Word中插入PC端视频

    step 1 在Word-插入中找到对象并打开 step 2 选择对象并打开,在其中选择PPT,Presentation step 3 然后打开了PPT,在其中插入视频,调整好大小后保存.退出 ste ...

  8. 反编译微信小程序保姆级教程(PC端程序包)

    本教程仅供学习,请勿用于非法途径,代码抄袭属于违法行为,尊重他人才是尊重自己 我一比较啰嗦,二比较懒.前方一堆屁话,正文移步到第二段!!!   这段时间一直在研究html.css.JavaScript ...

  9. 商城模板网站html5手机端_网站建设中,pc端与手机移动端设计一样吗

    在过去几年中,企业做网站建设基本都是做pc端的网站,原因就是pc端的网页界面显示的更多,可以对企业想要展示的图片进行更合理的布局展示.而这些年,手机逐渐智能化,很多人几乎已经脱离了电脑只使用手机,在这 ...

  10. 解决PC端的的TIM群聊界面无法显示公告、文件、记录栏,不显示群消息

    笔者的PC端TIM经常遇到各种"暂时无法显示",公告.文件.记录栏,群消息都没了. 解决方法: 打开ie浏览器 右上角齿轮->Internet选项->连接->局域 ...

最新文章

  1. centos和ubuntu安装卸载软件(rpm/dpkg)
  2. GNOME桌面的安装
  3. C++大师Lippman:我对中国程序员的忠告
  4. 使用富文本OHAttributedLabel
  5. javascript实现面向对象的继承
  6. 转载:关于爱情、伴侣、承诺、人生、
  7. matlab将模型解封装,模型保护 - MATLAB Simulink - MathWorks 中国
  8. 狗狗手机壁纸|爱宠必备
  9. java 读取栅格,提取两个重叠栅格的数据
  10. oracle 数字处理函数,ORACLE 数字型函数
  11. vector容器——插入和删除
  12. 管理思维的逻辑之案例作业
  13. 地理探测器——空间统计分析
  14. icem二维非结构网格划分_ICEM_CFD划分六面体结构网格
  15. git commit message——git提交日志规范备忘
  16. 数据挖掘与机器学习——数据挖掘概述
  17. 计算机网络之应用层图解,秒解应用层HTTP,期末考试不担心!!
  18. 目标检测(object detection)—— RCNN总结
  19. android 简单拍照,android实现简单拍照功能
  20. 大英百科挂了,维基百科赢了

热门文章

  1. 【基于pyAudioKits的Python音频信号处理项目(一)】实现音频频谱分析仪并进行交互式滤波器设计
  2. 信息学竞赛 c语言 pascal,pascal信息学竞赛教程
  3. 红外通信红外编码—NEC协议
  4. 数字频率计的Verilog设计
  5. 模电笔记1 | 信号的放大与分贝计算
  6. API卡_什么是图形API,API又是用来做什么的,其实它是一名出色的翻译官
  7. 山石sg6000e1700配置手册_Hillstone SG-6000安装手册.pdf
  8. 【Java项目】OA办公管理系统-万字细致讲解
  9. 显卡的测试软件是什么,你的显卡是什么水平,用这个软件就知道了
  10. java键盘代码_java中各种类型的键盘输入代码是什么