質問

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)

こんにちは皆、

私は、.csvファイルを開くには、Process.Startを使用しようとしたときにテストしていつのマシン上で次の例外を取得しています。何のファイルの関連付けは、このボックス上の.csvファイルに設定されていないので、私はこれが起こっていると思います。

ですから、このような状況を避けるためだろうか?

フォースProcess.Startは、メモ帳で開くには? - 理想的には、Excelで開くこと必要がありますが、Excelは、その後、

そのコンピュータ上に存在しない場合、あなたは何をしますか?

おかげ

役に立ちましたか?

解決

アプリケーションがエクセルに依存し、適切かつ効果的に動作するようにインストールされている場合は、それについて、その後のバグユーザー。例外をキャッチし、問題についてのそれらを伝えるために、通知をポップアップが、その通知にそれらをメモ帳などの代替エディタで開くオプションを与えます。

ユーザーに伝えるのではなく、ちょうど彼らの邪魔になっ等の小さな問題が発生したときに停止するよりも、継続するためのオプションを提供することで、あなたがそれらをエンパワーされているような方法でそれを行う -

これは、すべての良いUXに沸きます。

編集のDOは正確に何をやっている - 彼らはExcelを持っていることを前提としていない、彼らはOpenOfficeのようないくつかの他のビューア/エディタを有することができます。 CSVファイルに登録されているものは何でも、それはそれのことを行うことができます。自分で行くと、ファイルの関連付けをチェックしようとしないでください、あなたのアプリが(おそらくないだろう)、レジストリの周りfossicking行くための十分な権限を持っていないかもしれません。

また、ユーザーが目的のファイルを開くための権限を持っていないように、これはフォルダまたはファイル自体に設定された制限に起因する可能性があり、例外の他の明白な理由のためにチェックする必要があります。それはまだ別のプロセスで開いているので、たぶん、ファイルがロックされています。あなたのProcess.Startが失敗する可能性が理由の束があります。

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

他のヒント

を参照してください:あなたは本当のProcessStartInfo.ErrorDialogを=設定した場合

は、ユーザーはWindows標準のダイアログでプロンプトになります>

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top