8 Stimmen

Keine Anwendung ist mit der angegebenen Dateiausnahme verknüpft

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 zusammen,

Ich erhalte die folgende Ausnahme auf einem Rechner, auf dem ich teste, wenn ich versuche, mit Process.Start eine .csv-Datei zu öffnen. Ich denke, dies geschieht, weil keine Dateizuordnung für .csv-Dateien auf diesem Rechner festgelegt wurde.

Wie können Sie diese Situation vermeiden?

Erzwingen, dass Process.Start in Notepad geöffnet wird? - Idealerweise sollte es in Excel geöffnet werden, aber was tun Sie, wenn es Excel auf dem Computer nicht gibt?

Gracias

5voto

AZ. Punkte 6953

Wenn Sie ProcessStartInfo.ErrorDialog = true setzen, wird der Benutzer mit einem Standard-Windows-Dialog aufgefordert: siehe aquí

4voto

slugster Punkte 48412

Wenn Ihre Anwendung davon abhängt, dass Excel installiert ist, damit sie ordnungsgemäß und effektiv funktioniert, dann sollten Sie den Benutzer darauf hinweisen. Fangen Sie die Ausnahme ab und zeigen Sie eine Benachrichtigung an, um den Benutzer über das Problem zu informieren, aber geben Sie ihm dann in dieser Benachrichtigung die Möglichkeit, die Datei in einem alternativen Editor wie Notepad zu öffnen.

Dies alles läuft auf eine gute UX hinaus - informieren Sie den Nutzer, aber tun Sie es so, dass Sie ihn befähigen, indem Sie ihm Optionen zum Weitermachen anbieten, anstatt ihm einfach in die Quere zu kommen und aufzuhören, wenn ein kleines Problem wie dieses auftritt.

Bearbeiten: Tun Sie genau das, was Sie tun - gehen Sie nicht davon aus, dass sie Excel haben, vielleicht haben sie einen anderen Viewer/Editor wie OpenOffice. Was auch immer bei csv registriert ist, lassen Sie es seine Arbeit machen. Versuchen Sie nicht, die Dateiverknüpfung selbst zu überprüfen, denn Ihre Anwendung hat möglicherweise nicht genügend Berechtigungen, um in der Registrierung herumzusuchen.

Sie müssen auch nach anderen offensichtlichen Gründen für Ausnahmen suchen, z. B. dass der Benutzer keine Rechte zum Öffnen der Zieldatei hat, was auf Beschränkungen für den Ordner oder die Datei selbst zurückzuführen sein könnte. Vielleicht ist die Datei gesperrt, weil sie noch in einem anderen Prozess geöffnet ist. Es gibt eine ganze Reihe von Gründen, warum Ihr Process.Start fehlschlagen könnte.

Fangen Sie die Ausnahme ab, und wenn die Ursache keine mit der Datei verknüpfte Anwendung ist, bieten Sie ihnen die Möglichkeit dazu. Wenn sich der Benutzer für Notepad entscheidet, versuchen Sie, die Datei in Notepad zu öffnen, aber achten Sie weiterhin auf Ausnahmen. Notepad ist eine gute Option, da es die Datei nicht sperrt, aber dennoch den ACLs für Ordner und Dateien unterliegt.

3voto

dthorpe Punkte 34584

Lesen Sie die Registrierung, um zu sehen, ob es ein Programm gibt, das mit der Dateierweiterung verbunden ist, bevor Sie den process.start ausführen. Suchen Sie in HKEY_CLASSES_ROOT\.csv um zu sehen, wer für die Bearbeitung dieser Dateierweiterung registriert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X