拒绝访问 - 尝试删除文件夹中的所有文件

时间:2013-07-15 18:44:08

标签: c# directory access-denied delete-file

我目前正在(最近打开的文件)文件夹中删除所有文件,但没有运气,我得到了消息:“拒绝访问路径'C:\ Users \ User \ Recent'。”。我一直在四处寻找是否有任何解决方案,但遗憾的是我找不到任何东西。

Image:

String recent = Environment.ExpandEnvironmentVariables("%USERPROFILE%") + "\\Recent";
                        EmptyFolderContents(recent);

    private void EmptyFolderContents(string folderName)
        {

            foreach (var Folder in Directory.GetDirectories(folderName))
            {
                try
                {
                    Directory.Delete(Folder, true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            foreach (var Files in Directory.GetFiles(folderName))
            {
                try
                {
                   File.Delete(Files);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex);
                }
            }
        }

3 个答案:

答案 0 :(得分:1)

您的错误消息似乎表明您错过了反斜杠:

拒绝访问路径'C:Users \ User \ Recent'。

(在C:之后)

答案 1 :(得分:1)

您获得“拒绝访问”错误的原因是您不能只删除该文件夹中的文件。它们是真实文件的虚拟路径。可能有更好的方法来做你正在做的事情。

以下是我找到here的替代方案。它使用WinAPI,它永远不会有趣,但它可以工作。

//you'll need to add this.
using System.Runtime.InteropServices;

[DllImport("shell32.dll")]
public static extern void SHAddToRecentDocs(ShellAddToRecentDocsFlags flag, IntPtr pidl);

public enum ShellAddToRecentDocsFlags
{
    Pidl = 0x001,
    Path = 0x002,
}

//then call this from your method
SHAddToRecentDocs(ShellAddToRecentDocsFlags.Pidl, IntPtr.Zero);

答案 2 :(得分:0)

我使用权限Time Machine v1.1恢复默认权限并删除文件夹或文件或注册表项或Windows服务或wmi对象的“访问被拒绝”消息,它是免费且快速且简单的

从amyd projects blog下载