首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Getfiles() UnAuthorizedAccessAcception in WIN7

Getfiles() UnAuthorizedAccessAcception in WIN7
EN

Stack Overflow用户
提问于 2011-01-27 08:25:07
回答 2查看 1.3K关注 0票数 1

问题

  1. UnAuthorizedAccessException:递归搜索目录时(如C:\ ) 拒绝“对路径‘c:\文档和设置’的访问”。即使在UAC Priveledges升级和管理员组访问时也会发生。

尝试方法

  1. 尝试和捕捉:使用这些方法中的任何一种(异常、UnAuthorizedAccessException、空白捕获、继续)

问题

  1. 如何处理此类异常并继续正常运行程序?这需要在非管理员帐户和管理员帐户上都能工作。

示例代码

代码语言:javascript
复制
using System;
using System.IO;

namespace filecheck
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 0;
            int html = 0;
            try
            {
                string[] filePaths = Directory.GetFiles(@"c:\", "*.html", SearchOption.AllDirectories);

                foreach (string files in filePaths)
                {
                    if (Convert.ToBoolean(files.IndexOf("html")))
                    {
                        html++;
                    }
                    Console.WriteLine(files);
                    i++;

                }
                Console.Write("# Files found: {0} Html: {1)", i, html);
            }
            catch (UnauthorizedAccessException e)
            {
                Console.WriteLine("The process failed: {0}", e.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.ToString());

            }

        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-01-27 08:52:55

不幸的是,处理此问题的唯一方法是手动执行递归。即使在微软自己的样本代码中,他们也是这样做的,只是为了避免因为一个或多个目录无法访问而导致整个搜索失败。

因此,换句话说,只在搜索有限的目录子集时才使用SearchOption.AllDirectories,您可以确定这些目录不包含任何您无法访问的目录。

票数 2
EN

Stack Overflow用户

发布于 2011-01-27 13:07:58

要使您的程序与管理用户和非管理员用户一起工作,您要么需要模拟用户,要么需要重新构建应用程序,以便在任何用户执行或使用应用程序时“以管理员身份运行”。要构建这类应用程序,需要将app.manifest文件添加到项目中,并在app.manifest中删除以下设置行

代码语言:javascript
复制
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

有关更多信息,请在此处阅读:http://midnightprogrammer.net/post/How-To-Build-UAC-Compatible-Application-In-NET.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4814112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档