我正在尝试覆盖一个我没有源代码的应用程序的单实例限制。我知道这个应用使用了一个很好的技巧--使用CreateMutex来判断是否有另一个实例在运行。(如果互斥锁创建成功,则继续执行;如果getlasterror显示互斥锁已创建,则立即退出)。我通过嗅探Win32应用程序接口调用发现了这一点。我原以为使用Detour会起到作用,但它并不是很有效。我正在拦截CreateMutexW,但由于某种原因,它没有捕获对它的前四个调用。(同样,我通过嗅探win32调用并查看互斥锁的名称来知道这些调用是什么)。我确实拦截了第五个,但实际上我想拦截的是第一个。
我在示例应用程序中使用the绕道而行。我想知道问题是不是走弯路太晚了,还是因为这些呼叫可能有某种保护。绕道是最好的方法吗?也许使用其他东西可能是个更好的主意?
发布于 2013-01-13 00:44:04
你所描述的情况可能有几个原因。以下是其中最有可能的几个:
希望这能有所帮助。
https://stackoverflow.com/questions/13643236
复制相似问题