Question

UnhandledException: System.ComponentModel.Win32Exception: No application is associated with the specified file for this operation
   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(String fileName)

Salut tout le monde,

Je reçois l'exception suivante sur une machine que je teste lorsque vous essayez d'utiliser Process.Start pour ouvrir un fichier .csv. Je pense que cela se produit parce qu'aucune association de fichier a été défini pour les fichiers .csv sur cette case.

Alors, comment voulez-vous éviter cette situation?

Force le Process.Start à ouvrir dans le Bloc-notes? - Idéalement, il devrait être ouvert dans Excel, mais que faites-vous si Excel ne puis existe pas sur cet ordinateur

Merci

Était-ce utile?

La solution

Si votre application dépend Excel installé pour fonctionner correctement et efficacement, puis bug l'utilisateur à ce sujet. Intercepter l'exception et affiche une notification pour leur dire au sujet du problème, mais dans cette notification leur donner une option pour l'ouvrir dans un éditeur alternatif tel que le bloc-notes.

Tout cela se résume à un bon UX - indiquer à l'utilisateur, mais le faire de telle sorte que vous leur donner les moyens par des options offrant de continuer, plutôt que d'obtenir leur chemin et l'arrêt quand un petit problème comme ça se produit.

Modifier Faites exactement ce que vous faites - ne présumez pas qu'ils ont Excel, ils peuvent avoir un autre spectateur / éditeur comme OpenOffice. Tout ce qui est enregistré au format CSV, laissez-le faire des choses de lui. Ne pas essayer d'aller vérifier l'association de fichier vous-même, votre application ne peut pas (probablement pas) avoir des privilèges suffisants pour aller fossicking autour dans le registre.

Vous devez également vérifier pour d'autres raisons évidentes exceptions, comme l'utilisateur n'a pas le droit d'ouvrir le fichier cible, cela pourrait être dû à des restrictions sur le dossier ou le fichier lui-même. Peut-être que le fichier est verrouillé car il est encore ouvert dans un autre processus. Il y a un tas de raisons pour lesquelles votre Process.Start pourrait échouer.

Intercepter l'exception, et si la cause est pas application associée au fichier leur offrir ensuite l'option. Si les choisit utilisateur d'utiliser le Bloc-notes, essayer d'ouvrir le fichier dans le Bloc-notes, mais toujours attention aux exceptions. Bloc-notes est une bonne option, il ne tient pas un verrou sur le fichier, mais il est encore soumis à ACLs dossier / fichier.

Autres conseils

Si vous définissez la ProcessStartInfo.ErrorDialog = true, l'utilisateur sera rapide avec une fenêtre de dialogue standard: voir ici

Lire le registre pour voir s'il y a un programme associé à l'extension de fichier avant de faire le Process.Start. Regardez dans HKEY_CLASSES_ROOT\.csv pour voir qui est enregistré pour gérer cette extension de fichier, le cas échéant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top