c# – 正确的.NET方式实现单个实例应用程序

栏目: ASP.NET · 发布时间: 7年前

内容简介:当有疑问时,总是喜欢.NET框架中包含的一个实现.您可以很高的期望,这样的实施被成千上万的程序员测试,已经仔细检查了安全性和可用性,并将在未来几年内保持下去.互斥法是一个容易的方法.然而它却遭受了严重的安全问题.拒绝服务攻击非常简单,您不能将互斥体的名称保密,任何人都可以轻松创建具有相同名称的互斥体,并阻止您的程序启动.同样的原因,流程名称的方法是有缺陷的.不能保证流程名称是唯一的.不仅容易开发,而且容易被事故触发.

我在StackOverflow中看到至少有三种不同的方法来实现这一点.

>使用MUTEX: Accepted answer to this SO question

>使用Microsoft.VisualBasic库的WindowsFormsApplicationBase: Second highest voted answer to this SO question

>使用Process.GetProcessNames检查您的应用程序是否正在运行: Method here 已发布为此 SO question 的答案

我相信有更多的方法来做到这一点.

我只是想知道如果其中一个是首选的,如果我选择“错误”的话,后果可能如何.

当有疑问时,总是喜欢.NET框架中包含的一个实现.您可以很高的期望,这样的实施被成千上万的 程序员 测试,已经仔细检查了安全性和可用性,并将在未来几年内保持下去.

互斥法是一个容易的方法.然而它却遭受了严重的安全问题.拒绝服务攻击非常简单,您不能将互斥体的名称保密,任何人都可以轻松创建具有相同名称的互斥体,并阻止您的程序启动.

同样的原因,流程名称的方法是有缺陷的.不能保证流程名称是唯一的.不仅容易开发,而且容易被事故触发.

WindowsFormsApplicationBase在C#程序员的眼中有一个图像问题.他们窒息命名空间名称,并假定他们的程序将以某种方式被vb-isms感染.这是废话,它只是一个可以在任何语言中使用的简单的.NET类.

http://stackoverflow.com/questions/14104988/correct-net-way-to-implement-a-single-instance-application


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

亿级流量网站架构核心技术

亿级流量网站架构核心技术

张开涛 / 电子工业出版社 / 2017-4 / 99

《亿级流量网站架构核心技术》一书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、异步化、扩容、队列等多方面详细介绍了亿级流量网站的架构核心技术,让读者看后能快速运用到实践项目中。 不管是软件开发人员,还是运维人员,通过阅读《亿级流......一起来看看 《亿级流量网站架构核心技术》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具