8
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)

皆さんこんにちは、

Process.Start を使用して .csv ファイルを開こうとすると、テストしているマシンで次の例外が発生します。このボックスの .csv ファイルにファイルの関連付けが設定されていないため、これが発生していると思います。

では、どうすればこの状況を回避できるでしょうか。

Process.Start を強制的にメモ帳で開きますか? - 理想的には Excel で開く必要がありますが、そのコンピューターに Excel が存在しない場合はどうしますか?

ありがとう

4

3 に答える 3

5

ProcessStartInfo.ErrorDialog = true を設定すると、ユーザーは標準の Windows ダイアログでプロンプトが表示されます:ここを参照してください。

于 2012-06-07T19:31:54.427 に答える
4

アプリケーションが正しく効果的に機能するためにインストールされているExcelに依存している場合は、それについてユーザーにバグを報告します。例外をキャッチし、問題について通知する通知をポップアップ表示しますが、その通知で、メモ帳などの代替エディターで例外を開くオプションを提供します。

これはすべて、優れたUXに要約されます。ユーザーに伝えますが、そのような小さな問題が発生したときに邪魔をして停止するのではなく、続行するためのオプションを提供することで、ユーザーに力を与えるような方法で行います。

編集:あなたがしていることを正確に実行してください-彼らがExcelを持っていると思い込まないでください、彼らはOpenOfficeのような他のビューア/エディタを持っているかもしれません。csvに登録されているものは何でも、それを実行させてください。自分でファイルの関連付けを確認しようとしないでください。アプリには、レジストリをいじくり回すのに十分な特権がない可能性があります(おそらくないでしょう)。

また、ユーザーがターゲットファイルを開く権限を持っていないなど、例外のその他の明らかな理由を確認する必要があります。これは、フォルダーまたはファイル自体に課せられた制限が原因である可能性があります。別のプロセスでまだ開いているため、ファイルがロックされている可能性があります。Process.Startが失敗する理由はたくさんあります。

例外をキャッチし、原因がファイルに関連付けられたアプリケーションではない場合は、オプションを提供します。ユーザーがメモ帳を使用することを選択した場合は、メモ帳でファイルを開いてみてください。ただし、例外に注意してください。メモ帳は適切なオプションであり、ファイルをロックしませんが、フォルダー/ファイルのACLの対象となります。

于 2010-04-14T01:21:54.403 に答える
3

process.start を実行する前に、レジストリを読んで、ファイル拡張子に関連付けられたプログラムがあるかどうかを確認してください。HKEY_CLASSES_ROOT\.csvそのファイル拡張子を処理するために誰が登録されているかを確認してください。

于 2010-04-14T01:00:12.870 に答える