Я разрабатываю подключаемый модуль ActiveX для Internet Explorer, используя Qt, и пытаюсь заставить установщик убедиться, что подключаемый модуль не запущен, прежде чем продолжить. Стандартный подход к этому - создать именованный мьютекс в приложении и попытаться открыть его в установщике.
Это прекрасно работает, когда создается как автономный .exe, но когда библиотека подключаемого модуля загружается либо idc.exe (для регистрации сервера или обработки библиотеки типов), либо самим IE (после добавления теста для argv [0] чтобы пропустить CreateMutex для выполнения IDC), вызов CreateMutex завершается сбоем.
Вот как я это называю:
CreateMutex ((LPSECURITY_ATTRIBUTES) MUTEX_ALL_ACCESS, FALSE, "mutex_name_here");
Есть ли причина, по которой это должно завершаться с ошибкой при запуске в контексте сервера ActiveX, но работать правильно при автономной работе? Есть что-то еще, что мне здесь не хватает?