トップ回答者
RECYCLE.BINを触れない

質問
-
お世話になっております。
自作のバージョンアップツールを作っているのですが、ユーザの環境により
同じアプリのバージョン違いを[.bak]や[.old]のように複数混在させているようです。そこで、インストール(といってもコピペしただけ)のものを列挙してユーザに
選択させることにしました。ユーザはアプリをC直下においたりProgramFileに置いたり自由に設定している
ようなのでC直下からアプリの場所を検索しようとしたところで異常が発生しました。RECYCLE.BINにアクセスした途端にエラーで落ちるのです。
検索するとTryで拾うとか出てきますが一気に指定フォルダ配下を検索するとその時点でアウト、EnumerateFilesを使って
一つ一つ判定しようとしてもそこにアクセスした時点でアウト
Tryで異常を拾おうがForeachの途中なので次へ進めない。ゴミ箱を消す方法も試しましたが、Admin権限で実行しても同ファイルは残っており
登録ユーザを削除するしかないようです。識者のかたお知恵を貸してください。
回答
すべての返信
-
なるほど。そういうことですか。
GetFilesで例外が発生すれば、GetFilesは例外をはいてそこで終了してしまいます。そのはかれた例外をどうするかはGetFilesを呼び出している側の話になります。
そのサイトのコードをよく見てみて下さい。再帰的にGetFilesを実行してファイル一覧を取得しています。つまり、GetFilesは例外の度に終了しますが、再帰的に実行されるので何度もGetFilesが実行されるためにうまく行くのです。(追記)
>earchOption.AllDirectoriesをつけずにディレクトリを進めるということでしょうか。その通りです。再帰的にファイルを取得しているため、サブディレクトリまでファイルを取得するように指定してはいけません。
★良い回答には質問者は回答済みマークを、閲覧者は投票を!
- 編集済み trapemiyaModerator 2019年5月31日 2:15 よりわかりやすい表現に訂正