CreateMutex 和 ActiveX

发布于 2024-11-30 04:25:13 字数 415 浏览 0 评论 0原文

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

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

我是这样称呼它的:

CreateMutex((LPSECURITY_ATTRIBUTES)MUTEX_ALL_ACCESS, FALSE, "mutex_name_here");

在 ActiveX 服务器上下文中运行时会失败,但在独立运行时可以正常工作,是否有原因?我还缺少其他东西吗?

I'm developing an Internet Explorer ActiveX plugin using Qt, and trying to make the installer ensure the plugin is not running before continuing. A standard approach to this is to create a named mutex in the application and try to open it in the installer.

This works fine when built as a standalone .exe, but when the plugin DLL is loaded by either idc.exe (to register the server or handle the type library) or IE itself (after adding a test against argv[0] to skip CreateMutex for the idc runs), the CreateMutex call crashes.

Here's how I'm calling it:

CreateMutex((LPSECURITY_ATTRIBUTES)MUTEX_ALL_ACCESS, FALSE, "mutex_name_here");

Is there a reason this should fail when run within the context of an ActiveX server, but work correctly when running standalone? Is there something else I'm missing here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一百个冬季 2024-12-07 04:25:13

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

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

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

The first parameter to CreateMutex() is a pointer to a SECURITY_ATTRIBUTES structure (which contains a pointer to a security descriptor); it's not a set of requested access rights bits, which is what you're passing in. I'm not sure why that would work any better in a standalone application.

You probably want to pass in NULL for the first parameters so the mutex gets created with a default security descriptor.

The Desired Access bits would get passed to OpenMutex().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文