C#未经授权的用户文件夹访问例外
我试图列出我的用户文件夹“Thomas”中的所有文件夹和文件,然后我想得到这些文件夹中的所有文件夹以及文件等等。但每当我运行它时,它都会抛出以下异常:C#未经授权的用户文件夹访问例外,c#,.net,file,file-io,unauthorizedaccessexcepti,C#,.net,File,File Io,Unauthorizedaccessexcepti,我试图列出我的用户文件夹“Thomas”中的所有文件夹和文件,然后我想得到这些文件夹中的所有文件夹以及文件等等。但每当我运行它时,它都会抛出以下异常: System.UnauthorizedAccessException: Access to the path 'C:\Users\Thomas\AppData\Local\Application Data' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String
System.UnauthorizedAccessException: Access to the path 'C:\Users\Thomas\AppData\Local\Application Data' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.AddSearchableDirsToStack(SearchData localSearchData)
at System.IO.FileSystemEnumerableIterator`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.IO.Directory.GetDirectories(String path, String searchPattern, SearchOption searchOption)
at GetFilesInFolders.Program.Main(String[] args) in c:\users\thomas\documents\visual studio 2017\Projects\GetFilesInFolders\GetFilesInFolders\Program.cs:line 23
我觉得这很奇怪,因为我有访问此文件夹的完全权限,但出于某种原因,它表示另一种方式
所有代码如下所示:
using System;
using System.IO;
using System.Collections.Generic;
namespace GetFilesInFolders
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter a path: ");
string path = Console.ReadLine();
int UnauthorizedAccessCount = 0;//counter for file i cant access
List<string> DirList = new List<string>();
List<string> FileList = new List<string>();
try
{
if (Directory.Exists(path))
{
foreach (string dir in Directory.GetDirectories(path, "*", SearchOption.AllDirectories))
{
DirList.Add(dir);
}
foreach (string file in Directory.GetFiles(path, "*", SearchOption.AllDirectories))
{
FileList.Add(file);
}
}
else
{
Console.WriteLine("Directory does not exist!");
Console.ReadKey();
return;
}
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine("{0}", ex);
}
if(FileList.Count == 0)
{
Console.WriteLine("There were no files, or you didn't have proper permissions. (You didn't have permission to {0} files or folders", UnauthorizedAccessCount);
Console.ReadKey();
}
if(DirList.Count == 0)
{
Console.WriteLine("There were no folders, or you didn't have proper permissions. (You didn't have permission to {0} files or folders", UnauthorizedAccessCount);
Console.ReadLine();
}
else
{
Console.WriteLine("Here are all the folders:\n");
foreach (string dir in DirList)
{
Console.WriteLine(dir);
}
Console.WriteLine("Here are all the files:\n");
foreach (string file in FileList)
{
Console.WriteLine(file);
}
if (UnauthorizedAccessCount != 0)
{
Console.WriteLine("You had no permission to access {0} files.", UnauthorizedAccessCount);
}
else
{
}
Console.ReadLine();
}
}
}
}
使用系统;
使用System.IO;
使用System.Collections.Generic;
命名空间GetFileInfolders
{
班级计划
{
静态void Main(字符串[]参数)
{
WriteLine(“输入路径:”);
字符串路径=Console.ReadLine();
int UnauthorizedAccessCount=0;//我无法访问的文件的计数器
List DirList=新列表();
List FileList=新列表();
尝试
{
if(目录存在(路径))
{
foreach(Directory.GetDirectories(路径“*”,SearchOption.AllDirectories)中的字符串dir)
{
DirList.Add(dir);
}
foreach(Directory.GetFiles(路径“*”,SearchOption.AllDirectories)中的字符串文件)
{
FileList.Add(文件);
}
}
其他的
{
WriteLine(“目录不存在!”);
Console.ReadKey();
返回;
}
}
捕获(未经授权的访问例外)
{
Console.WriteLine(“{0}”,ex);
}
如果(FileList.Count==0)
{
WriteLine(“没有文件,或者您没有适当的权限。(您没有权限访问{0}个文件或文件夹”,UnauthorizedAccessCount);
Console.ReadKey();
}
如果(DirList.Count==0)
{
WriteLine(“没有文件夹,或者您没有适当的权限。(您没有权限访问{0}个文件或文件夹”,UnauthorizedAccessCount);
Console.ReadLine();
}
其他的
{
Console.WriteLine(“以下是所有文件夹:\n”);
foreach(DirList中的字符串dir)
{
控制台写入线(dir);
}
WriteLine(“以下是所有文件:\n”);
foreach(文件列表中的字符串文件)
{
Console.WriteLine(文件);
}
如果(未经授权的访问计数!=0)
{
WriteLine(“您没有访问{0}文件的权限。”,UnauthorizedAccessCount);
}
其他的
{
}
Console.ReadLine();
}
}
}
}
您说您拥有完全权限,但控制台脚本不使用帐户权限运行。它使用默认用户权限运行,App Data
是Windows中的受限文件夹(普通用户不应在其中闲逛)
将控制台应用程序更改为以管理员身份实际运行。有关如何执行此操作,请参阅以下答案:
您说您拥有完全权限,但控制台脚本不使用帐户的权限运行。它使用默认用户权限运行,
应用程序数据
是Windows中的受限文件夹(普通用户不应在其中闲逛)
将控制台应用程序更改为以管理员身份实际运行。有关如何执行此操作,请参阅以下答案: