Gérer une erreur dans un VB.net
Résolu
jojorealisateur
Messages postés
203
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
Voici mon problème : dans mon logiciel, si l'utilisateur clique sur un bouton, cela ouvre un installateur (qui se lance en administrateur automatiquement). La fenêtre UAC s'ouvre pour demander l'autorisation de s'exécuter. Si l'utilisateur clique sur "Oui", tout va bien. Mais si il clique sur "Non", alors, Windows se fâche :
"Consultez la fin de ce message pour plus de détails sur l'appel du débogage
juste-à-temps (JIT) à la place de cette boîte de dialogue.
System.ComponentModel.Win32Exception (0x80004005): L’opération a été annulée par l’utilisateur
à System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
à System.Diagnostics.Process.Start()
à System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
à System.Diagnostics.Process.Start(String fileName, String arguments)
à Wi_Fi_One_2._0._0.Form3.Button2_Click(Object sender, EventArgs e) dans C:\Users\Public\Documents\IPS\Wi-Fi One 2.0.0\Wi-Fi One 2.0.0\Form3.vb:ligne 18
à System.Windows.Forms.Control.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ButtonBase.WndProc(Message& m)
à System.Windows.Forms.Button.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
mscorlib
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Wi-Fi One 2.0.0
Version de l'assembly : 1.0.0.0
Version Win32 : 1.0.0.0
CodeBase : file:///C:/Users/Public/Documents/IPS/Wi-Fi%20One%202.0.0/Wi-Fi%20One%202.0.0/bin/Debug/Wi-Fi%20One%202.0.0.exe
----------------------------------------
Microsoft.VisualBasic
Version de l'assembly : 10.0.0.0
Version Win32 : 14.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
mscorlib.resources
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Pour activer le débogage juste-à-temps (JIT), le fichier de configuration pour cette
application ou cet ordinateur (machine.config) doit avoir la valeur
jitDebugging définie dans la section system.windows.forms.
L'application doit également être compilée avec le débogage
activé.
Par exemple :
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
Lorsque le débogage juste-à-temps est activé, les exceptions non gérées
seront envoyées au débogueur JIT inscrit sur l'ordinateur
plutôt que d'être gérées par cette boîte de dialogue."
Comment puis-je faire pour gérer cette exception ?
Merci !
Jojorealisateur
Voici mon problème : dans mon logiciel, si l'utilisateur clique sur un bouton, cela ouvre un installateur (qui se lance en administrateur automatiquement). La fenêtre UAC s'ouvre pour demander l'autorisation de s'exécuter. Si l'utilisateur clique sur "Oui", tout va bien. Mais si il clique sur "Non", alors, Windows se fâche :
"Consultez la fin de ce message pour plus de détails sur l'appel du débogage
juste-à-temps (JIT) à la place de cette boîte de dialogue.
- Texte de l'exception **************
System.ComponentModel.Win32Exception (0x80004005): L’opération a été annulée par l’utilisateur
à System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
à System.Diagnostics.Process.Start()
à System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
à System.Diagnostics.Process.Start(String fileName, String arguments)
à Wi_Fi_One_2._0._0.Form3.Button2_Click(Object sender, EventArgs e) dans C:\Users\Public\Documents\IPS\Wi-Fi One 2.0.0\Wi-Fi One 2.0.0\Form3.vb:ligne 18
à System.Windows.Forms.Control.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ButtonBase.WndProc(Message& m)
à System.Windows.Forms.Button.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
- Assemblys chargés **************
mscorlib
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Wi-Fi One 2.0.0
Version de l'assembly : 1.0.0.0
Version Win32 : 1.0.0.0
CodeBase : file:///C:/Users/Public/Documents/IPS/Wi-Fi%20One%202.0.0/Wi-Fi%20One%202.0.0/bin/Debug/Wi-Fi%20One%202.0.0.exe
----------------------------------------
Microsoft.VisualBasic
Version de l'assembly : 10.0.0.0
Version Win32 : 14.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3130.0 built by: NET472REL1LAST_B
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
mscorlib.resources
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
Version de l'assembly : 4.0.0.0
Version Win32 : 4.7.3062.0 built by: NET472REL1
CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
- Débogage JIT **************
Pour activer le débogage juste-à-temps (JIT), le fichier de configuration pour cette
application ou cet ordinateur (machine.config) doit avoir la valeur
jitDebugging définie dans la section system.windows.forms.
L'application doit également être compilée avec le débogage
activé.
Par exemple :
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
Lorsque le débogage juste-à-temps est activé, les exceptions non gérées
seront envoyées au débogueur JIT inscrit sur l'ordinateur
plutôt que d'être gérées par cette boîte de dialogue."
Comment puis-je faire pour gérer cette exception ?
Merci !
Jojorealisateur
A voir également:
- Gérer une erreur dans un VB.net
- Gerer stockage google - Guide
- Comment gérer les applications qui se lancent au démarrage - Guide
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Instagram une erreur s'est produite - Forum Instagram
- Erreur 0x80070643 - Accueil - Windows
4 réponses
Bonjour
manifestement le problème se situe dans Form3.Button2_Click(Object sender, EventArgs e)
à la ligne 18 du fichier Form3.vb ou dans "l'instruction" lancée à cette ligne.
Il faudrait que tu mettes un point d'arrêt un peu avant, que tu exécutes en pas à pas pour observer le contenu des variables et le comportement de l'exécution, afin de voir comment gérer l'annulation par l'utilisateur.
Voir ici
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2015/debugger/debugger-basics?view=vs-2015&redirectedfrom=MSDN
Ensuite, poste ton code, avec la coloration syntaxique (procédure détaillée là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Explique ce qui se passe, et quel est le contenu des variables au moment du bug.
Comme le dit Kalissi, une clause Try sera peut-être la solution
manifestement le problème se situe dans Form3.Button2_Click(Object sender, EventArgs e)
à la ligne 18 du fichier Form3.vb ou dans "l'instruction" lancée à cette ligne.
Il faudrait que tu mettes un point d'arrêt un peu avant, que tu exécutes en pas à pas pour observer le contenu des variables et le comportement de l'exécution, afin de voir comment gérer l'annulation par l'utilisateur.
Voir ici
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2015/debugger/debugger-basics?view=vs-2015&redirectedfrom=MSDN
Ensuite, poste ton code, avec la coloration syntaxique (procédure détaillée là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Explique ce qui se passe, et quel est le contenu des variables au moment du bug.
Comme le dit Kalissi, une clause Try sera peut-être la solution
Bonjour,
Il faut savoir que j'utilise uniquement
L'utilisateur peut aussi lancer d'autres fichiers qui ne sont pas de base en administrateur, mais qui sont lancés en tant que tel via ce code :
J'ai essayé autre chose : lorsque je clique droit sur mon logiciel compilé et que je le lance entièrement en administrateur, il ne demande aucune confirmation UAC. J'ai donc essayé d'aller changer le paramètre
Que dois-je faire pour supprimer cette erreur ?
Merci !
Jojorealisateur
Il faut savoir que j'utilise uniquement
Process.start ("CHEMINDACCES")pour lancer ce fichier qui est de base automatiquement en administrateur.
L'utilisateur peut aussi lancer d'autres fichiers qui ne sont pas de base en administrateur, mais qui sont lancés en tant que tel via ce code :
Try. Lorsque j'utilise ce code, si l'utilisateur clique sur "Non", il n'y a qu'une petite "MsgBox" qui s'ouvre et qui dit "L'opération a été annulée par l'utilisateur.". Ce n'est pas dérangeant...
Dim procInfo As New ProcessStartInfo()
procInfo.UseShellExecute = True
procInfo.FileName = (CHEMINDACCES)
procInfo.WorkingDirectory = ""
procInfo.Verb = "runas"
Process.Start(procInfo)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString())
End Try
J'ai essayé autre chose : lorsque je clique droit sur mon logiciel compilé et que je le lance entièrement en administrateur, il ne demande aucune confirmation UAC. J'ai donc essayé d'aller changer le paramètre
requestedExecutionLevel level="requireAdministrator" uiAccess="false"pour que tout se lance en administrateur. Le problème, c'est que lorsque je le génère, il y a apparemment une erreur avec ClicOnce. Pourtant, je ne l'utilise pas...
Que dois-je faire pour supprimer cette erreur ?
Merci !
Jojorealisateur
Qu'il y ait une messageBox c'est normal, c'est ce que tu lui a demandé à ton code.
Et là en l'état, ça ne doit pas affecter la suite du programme.
On peut faire en sorte que le messageBox ne s'affiche pas dans ce cas là.
Il faut mettre plusieurs catch en fonction du type de l'erreur, voir exemples ici
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/try-catch-finally-statement
PS: je constate que tu n'as pas lu ou appliqué le tuto sur les balises de codes. Je suis feignant quand il s'agit d'aider bénévolement : la prochaine fois, je ne lirais pas.
Et là en l'état, ça ne doit pas affecter la suite du programme.
On peut faire en sorte que le messageBox ne s'affiche pas dans ce cas là.
Il faut mettre plusieurs catch en fonction du type de l'erreur, voir exemples ici
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/try-catch-finally-statement
PS: je constate que tu n'as pas lu ou appliqué le tuto sur les balises de codes. Je suis feignant quand il s'agit d'aider bénévolement : la prochaine fois, je ne lirais pas.
Bonjour,
Je suis désolé pour les balises, je ne trouve pas "VB" ou "Visual Basic" ou quelque chose qui y ressemble... La seule chose que je vois, c'est "Basic", mais c'est un tout autre langage, non ?
Lorsque vous parlez de "Try" et de "Catch", je ne comprends pas... Comment devrais-je arranger le code pour les y insérer ?
La MsgBox ne me dérange pas du tout... Je me demandais juste si ça n'arrangerai pas les choses d'utiliser le code à la place de (désolé pour les balises)
Je vais essayer et je vous donne le résultat...
Merci et encore désolé pour les balises...
Jojorealisateur
Je suis désolé pour les balises, je ne trouve pas "VB" ou "Visual Basic" ou quelque chose qui y ressemble... La seule chose que je vois, c'est "Basic", mais c'est un tout autre langage, non ?
Lorsque vous parlez de "Try" et de "Catch", je ne comprends pas... Comment devrais-je arranger le code pour les y insérer ?
La MsgBox ne me dérange pas du tout... Je me demandais juste si ça n'arrangerai pas les choses d'utiliser le code à la place de (désolé pour les balises)
Process.Start ("CHEMINDACCES")...
Je vais essayer et je vous donne le résultat...
Merci et encore désolé pour les balises...
Jojorealisateur
Pour la coloration basic c'est bon.
Il y a plusieurs interprétations à cette phrase....
L'une d'elles suppose que tu as pris ce code quelque part, sans le comprendre et que tu espères en le bidouillant finir par faire ce que tu veux. Si c'est le cas, et bien le meilleur conseil que je puisse te donner, est de laisser ton projet de coté quelques jours afin de suivre ce cours https://plasserre.developpez.com/cours/vb-net/ il te donnera les bases pour ensuite reprendre ton projet plus sereinement.
Si ça n'est pas le cas, soit plus clair dans ta demande, car
Lorsque vous parlez de "Try" et de "Catch", je ne comprends pas... Comment devrais-je arranger le code pour les y insérer ?
Il y a plusieurs interprétations à cette phrase....
L'une d'elles suppose que tu as pris ce code quelque part, sans le comprendre et que tu espères en le bidouillant finir par faire ce que tu veux. Si c'est le cas, et bien le meilleur conseil que je puisse te donner, est de laisser ton projet de coté quelques jours afin de suivre ce cours https://plasserre.developpez.com/cours/vb-net/ il te donnera les bases pour ensuite reprendre ton projet plus sereinement.
Si ça n'est pas le cas, soit plus clair dans ta demande, car
La MsgBox ne me dérange pas du tout... Je me demandais juste si ça n'arrangerai pas les chosesça manque un peu cohérence. Le message ne te pose pas de problème, le programme devrait continuer à fonctionner (en tout cas c'est ce qu'indique ton code et tu n'as pas dit qu'il y a avait un autre programme)
Bonjour,
Excusez-moi, je n'ai effectivement pas été très clair dans ma réponse...
Effectivement, j'ai pris ce code quelque part, mais je le comprends... J'ai commencé ce projet dans mes débuts en VB.net et je l'ai repris seulement maintenant. À l'époque, je ne savais pas comment faire pour démarrer un fichier en tant qu'administrateur... Depuis, ça va... ;-)
Lorsque je dis que la MsgBox ne me dérange pas, c'est parce que vous souligniez sa présence... C'est tout à fait normal qu'elle soit là...
Finalement, j'ai essayé de remplacer le
Merci pour votre aide... Et désolé pour les balises...
Jojorealisateur
Excusez-moi, je n'ai effectivement pas été très clair dans ma réponse...
Effectivement, j'ai pris ce code quelque part, mais je le comprends... J'ai commencé ce projet dans mes débuts en VB.net et je l'ai repris seulement maintenant. À l'époque, je ne savais pas comment faire pour démarrer un fichier en tant qu'administrateur... Depuis, ça va... ;-)
Lorsque je dis que la MsgBox ne me dérange pas, c'est parce que vous souligniez sa présence... C'est tout à fait normal qu'elle soit là...
Finalement, j'ai essayé de remplacer le
Process.Start ("CHEMINDACCES")(voilà pour les balises ;-)) par le code
Try Dim procInfo As New ProcessStartInfo() procInfo.UseShellExecute = True procInfo.FileName = (CHEMINDACCES) procInfo.WorkingDirectory = "" procInfo.Verb = "runas" Process.Start(procInfo) Catch ex As Exception MessageBox.Show(ex.Message.ToString()) End Tryet ça marche. Lorsque l'utilisateur clique sur "Non" avec la fenêtre UAC, la MsgBox s'affiche au lieu de la boîte d'erreur de Windows...
Merci pour votre aide... Et désolé pour les balises...
Jojorealisateur