问题
尝试方法
问题
示例代码
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());
}
}
}
}发布于 2011-01-27 08:52:55
不幸的是,处理此问题的唯一方法是手动执行递归。即使在微软自己的样本代码中,他们也是这样做的,只是为了避免因为一个或多个目录无法访问而导致整个搜索失败。
因此,换句话说,只在搜索有限的目录子集时才使用SearchOption.AllDirectories,您可以确定这些目录不包含任何您无法访问的目录。
发布于 2011-01-27 13:07:58
要使您的程序与管理用户和非管理员用户一起工作,您要么需要模拟用户,要么需要重新构建应用程序,以便在任何用户执行或使用应用程序时“以管理员身份运行”。要构建这类应用程序,需要将app.manifest文件添加到项目中,并在app.manifest中删除以下设置行
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />有关更多信息,请在此处阅读:http://midnightprogrammer.net/post/How-To-Build-UAC-Compatible-Application-In-NET.aspx
https://stackoverflow.com/questions/4814112
复制相似问题