5 votes

Forcer une application à être une seule instance?

Existe-t-il un moyen de forcer une application sur Windows à être une application à instance unique, c'est-à-dire de ne pas se lancer si une autre instance de la même application est déjà en cours d'exécution ? Idéalement, je voudrais pouvoir faire cela sans avoir besoin de remplacer l'application réelle par un faux, mais je ne me dérangerais pas d'en utiliser un si vraiment nécessaire.

5voto

akira Points 58339

Normalement, vous devez implémenter cette fonction "singleton" directement dans l'application. si vous souhaitez la protéger "de l'extérieur", vous devez utiliser un wrapper qui vérifie s'il existe déjà une autre instance en cours d'exécution. il existe peut-être d'autres solutions à cela, mais j'ai déjà réussi à le faire avec nsis. l'idée est la suivante :

2voto

codemac Points 689

Sauf s'il existe une solution de contournement que vous pouvez appliquer avec le Kit de compatibilité des applications qui le permet – ce dont je doute (ce n'est pas le genre de chose qui enfreint la compatibilité1) – alors il n'y a aucun paramètre dans Windows.

En dehors d'une application de lancement, l'autre approche serait de surveiller les nouveaux processus (par exemple, les événements de création d'instance WMI pour les objets Win32_Process – bien sûr filtrés par session) et d'effectuer une action pour bloquer la deuxième instance.


1 Bien entendu, une correction pourrait être nécessaire si une application utilise un mécanisme non pris en charge pour détecter plusieurs instances d'elle-même, de sorte que le mécanisme de détection ait besoin d'un shim.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X