CreateMutex and ActiveX



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

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

我是这样称呼它的:

CreateMutex((LPSECURITY_ATTRIBUTES(MUTEX_ALL_ACCESS,FALSE,"mute_name_here"(;

在ActiveX服务器的上下文中运行时失败,但在独立运行时正常工作,这有什么原因吗?我还缺什么吗?

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

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

所需访问位将被传递到CCD_ 2。

最新更新