2010-01-20 119 views
0

我有一个VB.NET程序。在proerties/Application中,我选中了创建单实例应用程序。但它仍然允许某人在打开程序时打开该程序。我怎样才能防止这一点?如何防止程序加载两次?

+1

所以,你找到了一种方法来打败VB的单实例选项?你应该记录你是如何做到的...... – 2010-01-20 01:11:28

回答

1

简短的答案是你不能。 VB会在幕后做一些技巧来帮助你完成这个任务,因为这是一个常见的业务需求。但是,您创建的任何内容实际上是独占性的,这会让您遭到恶意创建/保存该资源并拒绝给您的其他人的拒绝服务攻击。

常见的方法是创建一个众所周知的互斥/信号/命名管道/类似的东西,如果它已经存在,退出刚刚启动的实例。没有一种安全的方式来做你想做的事情。

1

当您选择制作单一实例应用程序时,启动该程序的新副本将自动切换到现有副本。

您可以在Application类中自定义此行为。

1

最常见的做法是实现一个互斥锁,但是,我会在CodeProject上为您指出一两个文章herehere

希望这会有所帮助, 最好的问候, 汤姆。