2010-03-22 9 views
0

Je travaille avec un exécutable tiers que je ne peux pas recompiler (le fournisseur n'est plus disponible). Il a été écrit à l'origine sous .Net 1.1 mais semble fonctionner correctement dans les versions ultérieures. Je le lance en utilisant Process.Start à partir de ma propre application (j'ai essayé p/invoquer CreateProcess avec les mêmes résultats sans que cela soit pertinent)Comment éliminer la boîte de dialogue Exception non gérée produite par une application tierce

Malheureusement cette application tierce jette maintenant une exception non gérée lorsqu'elle se termine. La boîte de dialogue Microsoft a un titre comme "Exception lancée à partir de v2.0 ... Broadcast Window" avec le numéro de version relatif à la version de .Net sous laquelle il s'exécute (je peux utiliser un fichier .exe.config pour cibler différents .Net versions, n'aide pas).

La boîte de dialogue d'exception non gérée à la sortie ne provoque pas de problèmes réels, mais est dérangeante pour mes utilisateurs qui doivent cliquer sur OK pour la rejeter à chaque fois. Est-il possible (une option de fichier de configuration peut-être) de désactiver cette boîte de dialogue de montrer pour une application que je n'ai pas le code source? J'ai envisagé de le charger dans un nouvel AppDomain qui me donnerait accès à l'événement UnhandledException mais il n'y a aucune indication que je pourrais changer l'apparence de la boîte de dialogue. Peut-être que quelqu'un sait ce qui cause l'exception et je peux réparer cela d'une autre manière?

Répondre

2

Vous pouvez écrire une application wrapper qui appelle directement l'application tierce et lancez votre application en utilisant Process.Start. Ensuite, dans votre application wrapper, interceptez l'exception afin que les utilisateurs ne voient pas le message d'erreur.

+0

Il est faisable, mais vous fournir trop peu d'informations :) –

0

S'il n'a pas été obscurci, vous pourrez peut-être le décompiler? C'est bien sûr illégal, etc. Mais si l'entreprise a fait faillite, personne n'est là pour la poursuivre. Il est raisonnable de soutenir le code si vous n'avez pas d'autre choix. Reflector peut vous donner une idée de la raison pour laquelle le code se bloque également, peut-être avez-vous besoin de faire quelque chose ou de l'appeler avec un paramètre pour l'empêcher de le faire?

0

La prochaine fois ne pas essayer d'utiliser quelque chose sans le code source :)

Une solution de contournement est de suivre la suggestion de Chris. Une application d'emballage peut utiliser ce code,

http://blog.jtbworld.com/2007/06/windows-live-writer-spell-checking.html

  1. Trouver l'ancien exécutable de l'application.
  2. Exécutez-le dans un objet AppDomain créé dans l'application wrapper. Liez le gestionnaire d'exception non gérée de votre application à l'événement UnhandledException de l'objet AppDomain.

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

Questions connexes