CreateMutex和ActiveX

时间:2011-08-18 15:52:09

标签: windows winapi activex mutex

我正在使用Qt开发一个Internet Explorer ActiveX插件,并试图让安装程序确保插件在继续之前没有运行。标准方法是在应用程序中创建一个命名的互斥锁,并尝试在安装程序中打开它。

当构建为独立的.exe时,这可以正常工作,但是当插件DLL由idc.exe(注册服务器或处理类型库)或IE本身(在针对argv [0]添加测试之后)加载要跳过IDM运行的CreateMutex,CreateMutex调用崩溃。

以下是我如何称呼它:

CreateMutex((LPSECURITY_ATTRIBUTES)MUTEX_ALL_ACCESS,FALSE,“mutex_name_here”);

在ActiveX服务器的上下文中运行时是否会出现故障,但在独立运行时是否正常工作?我在这里还有其他的东西吗?

1 个答案:

答案 0 :(得分:2)

CreateMutex()的第一个参数是指向SECURITY_ATTRIBUTES结构的指针(包含指向安全描述符的指针);它不是一组请求的访问权限位,这就是你传入的内容。我不确定为什么在独立应用程序中这样做会更好。

您可能希望为第一个参数传入NULL,以便使用默认安全描述符创建互斥锁。

所需的访问位将传递给OpenMutex()