2017-07-16 68 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?

相關問題