Exécutez une instance multiple de n'importe quelle application Windows

Supposons qu'un auteur ait appliqué sa demande Windows pour être une instance unique. Existe-t-il un moyen de créer une instance multiple de cette application (en dehors de l'exécution dans une machine virtuelle ou de demander à l'auteur de réécrire l'application)?

S'il y a un outil prêt, j'aimerais le savoir. (J'ai essayé Sandboxie et Altiris SVS sans chance).

S'il n'y a rien là-bas, je veux programmer un outil / hack qui me permettra de faire cela. Je suis à la recherche de pointeurs par où commencer – ce qui sera impliqué, quelles compétences seraient nécessaires. J'ai des compétences de programmation modérées en C et Java.

Si cela ne peut pas être fait, expliquez pourquoi.

EDIT: Je sais que c'est une mauvaise idée mais j'ai encore besoin de le faire (pour diverses raisons). Je souhaite un mode générique qui fonctionne pour toute application et ne présente pas d'erreurs.

    De nombreuses applications vérifient la liste globale des processus (avec EnumProcesses, OpenProcess, GetModuleBaseName et autres fonctions similaires) ou la liste des fenêtres (avec EnumWindows, EnumChildWindows).

    Vous pouvez essayer de mettre en crochet (voir les exemples SetWindowsHookEx, CallNextHookEx, etc.) pour raccorder les appels de fonction API spécifiques de cette application et remplacer les données demandées en réponse à la vôtre pour tromper l'application.

    Il n'y a pas de manière générique car différentes applications utilisent différentes méthodes. Un petit nombre d'applications le font simplement pour la "facilité d'utilisation", mais pour beaucoup d'autres, il peut y avoir une bonne raison d'imposer des singletons. Le contournement pourrait entraîner une corruption de données ou tout simplement ne pas fonctionner.

    Vous pouvez exécuter une application sur différents comptes d'utilisateurs et la vérification d'instance ne fonctionnera plus.

    C'est possible!

    Voici une image de moi en demi-vie 1 4x dans 4 fenêtres toutes connectées au même serveur LAN, le seul problème est que les contrôleurs ne sont pas liés indépendamment à chaque fenêtre.

    http://img29.imageshack.us/img29/5642/yc0y.jpg

    Pour ce faire, vous avez besoin de «Process Explorer» – un programme qui vous permet de faire ce qu'on appelle «Close Handle» dans le sous-processus «\ BaseNamedObjects \ ValveHalfLifeLauncherMutex» ou quelque chose. ce n'est pas si dur. Allez ici pour obtenir des instructions détaillées – http://am.half-lifecreations.com/forums/index.php?topic=479.0

    Mais oui, c'est pour la demi-vie, mais obtenez Process Explorer et je suis sûr que vous pourrez trouver quel handle / processus vous devez fermer afin d'obtenir les programmes que vous souhaitez exécuter plusieurs fois.

    Je ne vois pas pourquoi Windows ne met pas en œuvre des jeux multi-jeux multiples dans les splits / snaps comme une fonctionnalité de toute façon! C'est clairement parce que les gens n'achèteraient pas autant de PC … vérifiez également SoftXSpand vraiment génial, vous permet d'exécuter plusieurs instances de Windows en tant qu'utilisateurs indépendants

    Les fichiers de verrouillage, les canaux nommés et les événements de synchronisation sont quelques-uns des moyens habituels utilisés pour vérifier qu'ils sont la seule instance en cours d'exécution. Pour contourner les fichiers de verrouillage, vous devez soit virtualiser le système de fichiers, raccrocher ou faire une suppression soigneusement programmée (et cela peut ne pas fonctionner si elle verrouille également le fichier). Les canaux nommés et les événements de synchronisation seront beaucoup plus difficiles car vous ne disposez pas du même contrôle de l'extérieur de l'application que vous faites avec les fichiers.