在Windows中启用一个程序多次运行?

我有这个传统的软件,只允许你一次运行一个副本,它检测到你有另一个会话打开,它不会允许你打开第二个实例。 问题是这是一个CPU密集型程序,它只使用一个单一的核心。 是否有任何黑客或调整,所以我可以欺骗并打开多个实例? 这将允许我退休约5台服务器…我使用Windows 2008 R2。

我不得不使用cff explorer来启用超过2GB的内存,因为当它试图使用超过2GB时,程序崩溃了。

将程序限制为一个实例不是一个OS函数:它必须在代码中进行编码。

这意味着正确的答案是:这取决于程序如何执行单实例检测。 有几种方法可以做到这一点:

  • 使用互斥体。 这是最简单的方法和最常用的方法。 在最简单的化身中,一个互斥体将被限制在当前的用户上下文中,这意味着可以通过创build不同的服务实例来运行程序并在不同的用户上下文中运行它们,从而欺骗程序多次运行。 当然,这是假设您可以完全自动化程序。 通常也可以编写一个操纵互斥锁的“包装器”应用程序,并将其更改为允许其他实例运行的方式。

  • 检查进程列表中的exe名称。 微不足道:重命名exe,运行。

  • locking一个特定的文件。 根据文件的位置,这可能是微不足道的或困难的。

  • locking本地资源(TCP端口等)。 这通常是最难解决的问题,因为没有简单的方法来欺骗应用程序不使用该资源(特别是如果它真的被使用,而不是locking以防止并发)。

在所有情况下,最简单的做法是要求开发者解除这个限制。

Sandboxie没有考虑到这个用法,但是由于它在虚拟“瓶子”中运行进程的方式,它可以用来运行一个通常只允许运行一个实例的应用程序的多个实例。

另一个可能的select:通过创build一个互斥体,通常只允许一个实例的程序。 当一个新的实例启动时,互斥体的存在会被检查,如果find它就停止执行。 编写一个程序可以启动一个实例,然后删除它的互斥体。 应该注意的是,那些不期望多于一个并发实例的应用程序在这种方法中可能会有问题,所以某种程度的虚拟化是可取的,因为每个实例都不知道或与其他人交互。

App-V可能会帮助你。 它允许您运行同一个虚拟化程序的多个实例,每个虚拟程序彼此隔离。

Ctrl + Shift +双击应用程序快捷方式图标

它将打开新的应用程序实例