2017-07-16 37 views
0

我想列出所有的文件夹和文件在我的用户文件夹,这是“托马斯”,然后我想获得在这些文件夹中的所有文件夹以及文件等。但每当我运行它,它抛出此异常:C#UnauthorizedAccessException到用户文件夹

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(); 
      } 

     } 
    } 
} 

回答

1

你说你有充分的权限,但控制台脚本不与该帐户的特权时运行。它使用默认的用户特权运行,而App Data是Windows中的一个受限制的文件夹(普通用户不应该在其中徘徊)。

更改您的控制台应用程序以实际以管理员身份运行。看到这个答案如何做到这一点:

How do I force my .NET application to run as administrator?

相关问题