扫描文件夹大小时,有些"Access Denied"?



我想创建一个程序来查找服务器上的文件夹大小,但是...

我有几个无法访问的文件夹(fx漫游用户配置文件 - 在服务器上),作为管理员是否可以获取这些文件夹的大小?

我想既然备份系统可以访问这些文件夹,那么我也应该......不知何故。

编辑:

看到人们将我的问题标记为重复,但是..

  1. 模拟如何帮助我?使用模拟,我以其他用户身份运行进程,但我应该以哪个用户的身份运行它,以获取服务器上所有用户配置文件的文件夹大小(文件夹)?

  2. 已经尝试了提升的 UAC,如评论中所示,但没有效果。访问仍被拒绝。

所以我仍然没有接近我的问题的解决方案。

如果你想在

失败后继续下一个文件夹,那么是的;你必须自己做。我会推荐一个堆栈(深度优先)或队列(首先是繁殖)而不是递归,以及一个迭代器块(收益率返回);然后,您可以避免堆栈溢出和内存使用问题。

public static IEnumerable<string> GetFiles(string root, string searchPattern)
{
    Stack<string> pending = new Stack<string>();
    pending.Push(root);
    while (pending.Count != 0)
    {
        var path = pending.Pop();
        string[] next = null;
        try
        {
            next = Directory.GetFiles(path, searchPattern);                    
        }
        catch { }
        if(next != null && next.Length != 0)
            foreach (var file in next) yield return file;
        try
        {
            next = Directory.GetDirectories(path);
            foreach (var subdir in next) pending.Push(subdir);
        }
        catch { }
    }
}

或者您可以执行以下操作:

您可以设置程序,以便您只能以管理员身份运行。

在 Visual Studio 中:

右键单击项目 -> 属性 ->

安全 ->启用 单击一次安全设置

单击它后,将在项目的属性文件夹下创建一个名为 app.manifest 的文件 创建后,您可以取消选中"启用 ClickOnce 安全设置"选项

打开该文件并更改此行:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

自:

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

这将使程序需要管理员权限,并保证您可以访问该文件夹。

相关内容

最新更新