2010-11-26 11 views
1

Excelのファイルが書き込まれるディレクトリをユーザーが選択できるvb.netアプリケーションがあります。ユーザーがシステムディレクトリを選択した場合(私のユーザーはこれを行い、理由を聞かないでください)、実行時にSystem.Runtime.InteropServices.COMExceptionがスローされます。ファイルを書き込む前にシステムフォルダを検出してSystem.Runtime.InteropServices.COMExceptionを避ける

私はこの例外を処理しているので、別のディレクトリを選択してください。

私のアプリケーションは正常に動作しますが、例外がスローされる前にディレクトリにファイルを書き込むことができるかどうかを検出する方法を本当に知りたいと思います。

いいえ、System.IO.DirectoryInfoを使用すると、そのトリックはできません。または、おそらくそれだけでは十分ではありません。

ありがとうございました!

答えて

0

コピー先のフォルダにダミーファイルを作成しようとすると、そのファイルが正常に削除された場合は削除されます。作成(作成)に失敗すると、.xls(x)ファイルを保存できなくなりますそこ! DirectoryInfoがシステムファイル/フォルダの検出を許可することを確かめてください。ただし、ダミーファイルのトリックは、任意のフォルダのアクセス許可をチェックする安価な方法です。

+0

はい、私はダミーファイルを考えましたが、ちょっと同じですが、実行時にスローされた例外を処理します。私はちょうどそれを行うよりエレガントな方法があるかどうかを知りたいと思います。あなたの答えをありがとう。 – mulac

+0

FileIOPermission(http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermission.aspx)は有望ですが、許可があればすべての道路で例外がスローされるように見えます否定されたあなたはSaveFileDialogを使用していますか?もしそうなら、これはユーザーの選択を受け入れる前に目的地をチェックするためのプロパティを持っていますか? OnFileOkは、選択したファイルを検証するのに適したフックのように見えます。 –

+0

実際にはSaveFileDialogはありません...ユーザーがデフォルトのディレクトリを選択する設定画面があります。私は、フォルダを選択するOpenFileDialogを使用しています... FolderBrowserDialogはとてもugggghhhです。私がしたいのは、OnFileOkイベントを使ってチェックします。私は、あなたが納得したFileIOPermissionクラスを見て、皆さんに知らせてください。ありがとうございました! – mulac

関連する問題