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


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

查看所有标签

猜你喜欢:

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

软件随想录

软件随想录

Joel Spolsky / 阮一峰 / 人民邮电出版社 / 2009 / 49.00元

《软件随想录:程序员部落酋长Joel谈软件》是一部关于软件技术、人才、创业和企业管理的随想文集,作者以诙谐幽默的笔触将自己在软件行业的亲身感悟娓娓道来,观点新颖独特,内容简洁实用。全书分为 36讲,每一讲都是一个独立的专题。 《软件随想录:程序员部落酋长Joel谈软件》从不同侧面满足了软件开发人员、设计人员、管理人员及从事软件相关工作的人员的学习与工作需要。一起来看看 《软件随想录》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具