windows - CreateMutex og ActiveX

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er ved at udvikle et Internet Explorer ActiveX-plugin ved hjælp af Qt, og forsøger at gøre installationsprogrammet sikre, at plugin'et ikke kører, før det fortsætter. En standard tilgang til dette er at oprette en navngivet mutex i applikationen, og prøv at åbne den i installationsprogrammet.


Dette fungerer fint, når det er bygget som en standalone .exe, men når plugin DLL er indlæst af enten idc.exe (for at registrere serveren eller håndtere typebiblioteket) eller IE selv (efter at have tilføjet en test mod argv

Bedste reference

for at springe over CreateMutex for idc-kørslen), kører CreateMutex-opkaldet.


Her er hvordan jeg kalder det:


CreateMutex ((LPSECURITY\_ATTRIBUTES) MUTEX\_ALL\_ACCESS, FALSE, 'mutex\_name\_here');


Er der en grund til, at dette skulle mislykkes, når det kører inden for rammerne af en ActiveX-server, men fungerer korrekt, når du kører selvstændigt? Er der noget andet jeg mangler her?

Andre referencer 1


Den første parameter til CreateMutex() er en pointer til en SECURITY\_ATTRIBUTES struktur (som indeholder en peger til en sikkerhedsbeskrivelse); det er ikke et sæt anmodede adgangsrettigheder bits, hvilket er hvad du går forbi. Jeg er ikke sikker på, hvorfor det ville fungere bedre i en selvstændig applikation.


Du vil sandsynligvis passere i NULL for de første parametre, så mutexen bliver oprettet med en standard sikkerhedsbeskrivelse.


De ønskede adgangsbit vil blive overført til OpenMutex().