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


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

查看所有标签

猜你喜欢:

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

用户思维+:好产品让用户为自己尖叫

用户思维+:好产品让用户为自己尖叫

[美] Kathy Sierra / 石航 / 人民邮电出版社 / 2017-9 / 69.00元

畅销产品与普通产品的本质区别是什么?若没有巨额预算、不爱营销噱头、不开奢华的产品发布会,如何打造可持续成功的产品?本书针对上述问题提出了新颖的观点:用户并不关心产品本身有多棒,而是关心使用产品时自己有多棒。作者利用其多年的交互设计经验,生动阐释了这一观点背后的科学。可贵的是,本书并不止步于解释“为什么”,还清晰呈现了“怎么做”。 本书风格活泼、图文并茂,其对话式内容既引人入胜,又引人深思,适......一起来看看 《用户思维+:好产品让用户为自己尖叫》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具