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

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

内容简介:当有疑问时,总是喜欢.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


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

查看所有标签

猜你喜欢:

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

信息架构

信息架构

[美] 路易斯·罗森菲尔德、[美] 彼得·莫尔维莱、[美] 豪尔赫·阿朗戈 / 樊旺斌、师蓉 / 电子工业出版社 / 2016-5-1 / 128.00元

本书的前三个版本都是信息架构领域的开山著作。其中描述了信息组织的普遍和永恒原则,这一原则也适用于不断增长的移动世界。在第4版中,作者运用大量最新的插图和例子为这些原则提供了当前实践中的情境,验证了那些与技术和供应商无关的工具,以及那些经受住时间考验的技术。一起来看看 《信息架构》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

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

RGB CMYK 互转工具