我有这个遗留软件,只允许你一次运行一个副本,它检测到你打开了另一个会话,它不允许你打开第二个实例.问题是这是一个cpu密集型程序,它只使用一个核心.是否有任何黑客或调整,所以我可以欺骗它并打开多个实例?这将允许我退休大约5台服务器……我正在使用
Windows 2008 R2.
我不得不使用cff explorer来启用超过2GB的RAM,因为程序在尝试使用超过2GB时会崩溃.
将程序限制为仅一个实例不是OS功能:它必须在代码内编码.
这意味着正确的答案是:它取决于程序如何执行单实例检测.有几种方法可以做到这一点:
>使用互斥锁.这是最简单的方法,也是最常用的方法.在最简单的版本中,互斥锁将仅限于当前用户上下文,这意味着您可以通过创建不同的服务实例来运行程序并在不同用户的上下文中运行它们,从而欺骗程序多次运行.当然,这假定您可以完全自动化程序.通常也可以编写一个操作互斥锁的“包装”应用程序,并以允许其他实例运行的方式对其进行更改.
>检查进程列表中的exe名称.琐碎:重命名exe,运行.
>锁定特定文件.根据文件的位置,这可能很简单或很困难.
>锁定本地资源(TCP端口等).这通常是最难解决的问题,因为没有简单的方法来欺骗应用程序不使用该资源(特别是如果它真的被使用,而不仅仅是锁定以防止并发).
在所有情况下,最简单的方法是要求开发人员解除限制.