0

一時ファイル、プリフェッチデータ、最近のフォルダ内のファイルなどを削除できるソフトウェアを書いています。私の問題は、Tempフォルダーからファイルを正常に削除できることですが、Recentフォルダーを試してみると、「パスへのアクセスが拒否されました」という例外がスローされます。PS:他のいくつかの質問によると、ファイル属性を通常に設定しましたが、それでもうまくいきません。この問題について私を助けてください。理解を深めるために、ここにいくつかのコードを配置します。

public Boolean CleanRecentData()
{
        isAllClean = true;
        String SysRecentPath = System.Environment.GetEnvironmentVariable("USERPROFILE") + "\\Recent";
        DirectoryInfo SysRecDir = new DirectoryInfo(SysRecentPath);
        File.SetAttributes(SysRecentPath, FileAttributes.Normal);

foreach (FileInfo fi in SysRecDir.GetFiles())   //Access Denied 
                                                 //Exception is thrown here
        {
            try
            {
                fi.Delete();
            }
            catch (Exception ex)
            {
                recentLogLines.AppendLine(ex.Message);
                isAllClean = false;
            }
        }

        foreach (DirectoryInfo dir in SysRecDir.GetDirectories())
        {
            try
            {
                dir.Delete(true);
            }
            catch (Exception ex)
            {
                recentLogLines.AppendLine(ex.Message);
                isAllClean = false;
            }
        }

        return isAllClean;
    }
4

1 に答える 1

1

Windows エクスプローラーから最近使ったフォルダーにアクセスできますか?

システムのアクセス許可を変更することはできますが、ユーザー システムでは変更できません。したがって、この例外条件は 2 つの方法で処理できます。

  1. FileIOPermissionを使用して、アクセスする前にファイル アクセス権があるかどうかを確認する必要がありますが、あまりにも多くのファイルに対して実行している場合、これは冗長で無駄になる可能性があります。
  2. ファイルを開いてみて、失敗した場合は適切な例外ハンドラーに力を入れてください。
于 2013-03-16T02:03:08.293 に答える