【发布时间】:2012-11-30 10:21:04
【问题描述】:
我正在尝试覆盖我没有源的应用程序的单个实例限制。我知道该应用程序正在使用使用 CreateMutex 来确定是否有另一个实例正在运行的好方法。 (如果互斥锁创建成功,它会继续,如果 getlasterror 说互斥锁已经创建,它会立即退出)。我通过嗅探 Win32 api 调用发现了这一点。 我认为使用 Detours 可以解决问题,但效果并不理想。我正在拦截 CreateMutexW,但由于某种原因,它没有捕获对它的前四个调用。 (通过嗅探 win32 调用并查看互斥体的名称,我再次知道这些调用是什么)。我确实截获了第五个,但我真正想要截获的是第一个。
我通过带有dll的示例应用程序绕道而行。我想知道问题是绕道太晚还是因为这些电话可能有某种保护。弯路是最好的方法吗?也许使用其他东西可能是一个更好的主意?
【问题讨论】:
-
通常开发人员有充分的理由阻止他们的软件同时运行两次...
-
这很明显,但我不会无缘无故地进行拦截。
-
只是想确认一下 :-)