Frage

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)

Hallo allerseits,

Ich erhalte die folgende Ausnahme auf einer Maschine auf das ich testen, wenn sie versuchen Process.Start zu verwenden, um eine CSV-Datei zu öffnen. Ich denke, dass dies geschieht, weil keine Dateizuordnung auf dieser Box Set für CSV-Dateien wurde.

Wie würden Sie diese Situation vermeiden?

Kraft der Process.Start im Editor zu öffnen? - Im Idealfall sollte es in Excel geöffnet werden, aber was tun Sie, wenn Excel dann existiert nicht auf diesem Computer

Danke

War es hilfreich?

Lösung

Wenn Ihre Anwendung ist abhängig von Excel installiert ist richtig und effektiv zu arbeiten, dann Fehler der Benutzer darüber. Fangen Sie die Ausnahme, und Pop-up eine Benachrichtigung ihnen über das Problem zu sagen, aber dann in dieser Mitteilung gibt ihnen eine Option zu öffnen es in einem alternativen Editor wie Notepad.

Das läuft alles auf eine gute UX nach unten - dem Benutzer sagen, aber tun Sie es so, dass man sie durch das Angebot von Optionen Ermächtigung in den Weg fortzusetzen, anstatt nur immer und zu stoppen, wenn ein kleines Problem, wie das geschieht.

Edit: Do genau das, was Sie tun - nicht davon ausgehen, dass sie Excel haben, können sie einen anderen Viewer / Editor wie Openoffice haben. Was auch immer zu csv registriert ist, lassen Sie es sich zur Sache zu tun. Versuchen Sie, nicht zu gehen und überprüfen Sie die Dateizuordnung selbst, Ihre App nicht (wahrscheinlich nicht) über ausreichende Berechtigungen gehen in der Registrierung fossicking um.

Sie müssen auch Ausnahmen für andere offensichtliche Gründe überprüfen, wie die Benutzerrechte nicht über die Zieldatei zu öffnen, könnte dies aufgrund von Beschränkungen auf dem Ordner platziert sein oder die Datei selbst. Vielleicht ist die Datei gesperrt, weil es immer noch offen in einem anderen Prozess ist. Es gibt eine Reihe von Gründen, warum Ihre Process.Start scheitern könnte.

Fangen Sie die Ausnahme, und wenn die Ursache keine Anwendung mit der Datei dann verbunden ist, bieten sie die Möglichkeit. Wählt der Anwender den Editor zu verwenden, versuchen, die Datei in Editor öffnen, aber immer noch für Ausnahmen achten. Notepad ist eine gute Option, es keine Sperre für die Datei halten, aber es ist immer noch unter Ordner / Datei ACLs.

Andere Tipps

Wenn Sie die ProcessStartInfo.ErrorDialog gesetzt = true, dann wird der Benutzer mit einem Standard-Windows-Dialogaufforderung sein: siehe hier

Lesen Sie die Registrierung, um festzustellen, ob es ein Programm mit der Dateierweiterung zugeordnet ist, bevor Sie die Process.Start tun. Schauen Sie in HKEY_CLASSES_ROOT\.csv zu sehen, der diese Dateierweiterung zu handhaben registriert ist, wenn überhaupt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top