「アクセスが拒否されたフォルダをスキップ」してくれません。ご教授下さい。

繰り返し(フォルダ内のフォルダ)アクティビティにて「アクセスが拒否されたフォルダをスキップ」にチェックしているにもかかわらず、アクセス拒否のフォルダの情報にアクセスしに行ってしまいますが、何か他にチェックすべき項目などありますでしょうか?

よろしくお願いいたします。

もし「スキップ」オプションが選択されている場合、アクセスが拒否されたフォルダは自動的にスキップされます。つまり、試行は行われるもののそれは考慮されません。
アクティビティが現在のユーザーにとってアクセス制限のあるフォルダに遭遇してエラーが発生した場合、エラーダイアログで「スキップ」オプションを選択すると、フォルダ全体ではなく、アクティビティ全体がスキップされます。

@fujitakenorimi

こんにちは

アクセス拒否のフォルダの情報にアクセスしに行ってしまいますが

実際に例外が発生していますでしょうか?
アクセスは拒否されいても、そのフォルダの存在が確認できるのであれば情報としては返ってくるように思えます。さらに子供のフォルダの話になりますでしょうか?

具体的な例で申し訳ありません。

“C:\Users\fujit”(変数名:in_対象フォルダパス)の直下にあるフォルダ名と、
そのフォルダの中のファイル数を取得したいプログラムです。

この例では「C:\Users\fujit¥Application Data」がアクセス拒否のフォルダなのでスキップしてほしいのですが、
スキップせず、フォルダ名を取得するもフォルダ数は取得できないため、次のステップで代入できずエラーになってしまいます。

よろしくお願いいたします。

「アクセスが拒否されたフォルダをスキップ」は実際に取得しようとしたフォルダがアクセス拒否されるケースでエラーにならないだけになります。例えば上記でサブフォルダを含むをチェック入れた場合、「アクセスが拒否されたフォルダをスキップ」が有効な場合は、例外が発生しませんが、無効な場合は、Application Data配下を見に行った時に例外となると思います。
(のでこの機能は、希望の動作にはならないと思います。)

単純にGetFilesをコールしているアクティビティをTryCatchで囲み、例外発生時はそのまま何もせずに次のアイテムを処理するようにすれば良いように思えますがいかがでしょうか?

早速のご返答ありがとうございます。
単純に「アクセスが拒否されたフォルダをスキップ」にチェックを入れるとApplication Data自体にアクセスしないと思っていましたが、そうではなかったのですね。

アドバイスいただいた通りTryCatchで囲むことで希望の動作を行うことができました。

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

1 Like