簡體   English   中英

C#UnauthorizedAccessException到用戶文件夾

[英]C# UnauthorizedAccessException to User Folder

我試圖列出我的用戶文件夾“ Thomas”中的所有文件夾和文件,然后我想獲取這些文件夾中的所有文件夾以及文件等。 但是,每當我運行它時,它都會引發以下異常:

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

        }
    }
}

您說您擁有完全許可權,但是控制台腳本不會以該帳戶的特權運行。 它以默認用戶權限運行,並且App Data是Windows中的受限文件夾(一般用戶不應在其中瀏覽)。

將您的控制台應用程序更改為以管理員身份實際運行。 請參閱以下答案以了解如何執行此操作:

如何強制.NET應用程序以管理員身份運行?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM