我正在尝试覆盖我没有源的应用程序的单个实例限制。我知道该应用程序正在使用使用 CreateMutex 来确定是否有另一个实例正在运行的好方法。(如果互斥锁创建成功,它会继续,如果 getlasterror 说互斥锁已经创建,它会立即退出)。我通过嗅探 Win32 api 调用发现了这一点。我认为使用 Detours 可以解决问题,但效果并不理想。我正在拦截 CreateMutexW,但由于某种原因,它没有捕获对它的前四个调用。(通过嗅探 win32 调用并查看互斥体的名称,我再次知道这些调用是什么)。我确实截获了第五个,但我真正想要截获的是第一个。
我通过带有dll的示例应用程序使用弯路。我想知道问题是绕道太晚还是因为这些电话可能有某种保护。弯路是最好的方法吗?也许使用其他东西可能是一个更好的主意?