programing

경로에 대한 액세스가 거부되는 이유는 무엇입니까?

magicmemo 2023. 4. 21. 20:26
반응형

경로에 대한 액세스가 거부되는 이유는 무엇입니까?

파일을 삭제하려고 하는데 예외가 발생하는 문제가 있습니다.

if (result == "Success")
{
     if (FileUpload.HasFile)
     {
         try
         {
              File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
              string filename = Path.GetFileName(btnFileUpload.FileName);
              btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
         }
         catch (Exception ex)
         {
               Message(ex.ToString());
         }
      }
}

또한 삭제하려는 폴더는 네트워크 서비스에 대한 모든 제어 권한을 가지고 있습니다.

모든 예외 메시지는 다음과 같습니다.

System. 부정 액세스예외:경로 'C:에 액세스합니다.\사용자\gowdyn\Documents\Visual Studio 2008\Projects\hybrid\temp_loginimages\enviromental.jpg'이 거부되었습니다.를 클릭합니다.IO.__오류.WinIOError(Int32 오류 코드, 문자열일 수 있음)FullPath)를 선택합니다.IO.파일하이브리드에서 삭제(문자열 경로)합니다.사용자_제어.C의 Imgloader_Add_Edit_Tbl.btnUpdate_Click(개체 송신자, EventArgs e):\사용자\gowdyn\Documents\Visual Studio 2008\프로젝트\하이브리드\하이브리드\User_Controls\Imgloader_Add_Edit_Tbl.ascx.cs:line 242

좋은 생각 있어요?

[파일(File에 따라.메서드 삭제...

UnauthorizedAccessException중 .

  • 발신자에게 필요한 권한이 없습니다.
  • 파일이 사용 중인 실행 파일입니다.
  • 경로는 디렉토리입니다.
  • 경로가 읽기 전용 파일을 지정했습니다.

저도 문제가 있어서 이 포스트에 걸려 넘어졌어요.복사/삭제 전후에 다음 코드를 추가하였습니다.

삭제

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

알았다.

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

오래된 문제인데 검색하다가 우연히 발견했어요.SaveAs 저장 경로에서 실제 파일 이름 구성 요소를 찾을 수 없었습니다.

string uploadPath = Server.MapPath("~/uploads");
file.SaveAs(uploadPath); // BAD
file.SaveAs(Path.Combine(uploadPath, file.FileName)); // GOOD

사용자가 웹 사이트에 연결하려고 하면 IIS가 연결을 IUSER_ComputerName 계정에 할당합니다. 여기서 ComputerName은 IIS가 실행 중인 서버의 이름입니다.기본적으로는 IUSER_ComputerName 계정은 Guests 그룹의 멤버입니다.이 그룹에는 보안 제한이 있습니다.해당 폴더에 대한 IUSER_ComputerName에 대한 그랜드 액세스를 시도합니다.

다음은 IIS 보안에 대한 매우 적절한 답변입니다.

도움이 되었으면 좋겠다

수신처가 파일이어야 한다는 것을 깨닫지 못해 오류가 발생하였습니다.이렇게 해서 'cmd'라는 단어가 나왔는데, 'cmd'라는 단어가 요.Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.C# C#은File.Move두를 두 파라미터로 이 파라미터는 합니다.따라서 디렉토리를 두 번째 파라미터로 넣으면 다음과 같은 파일을 쓰려고 합니다.c:\crp「 」라고 하는 .c:\crp.

이것은 틀릴 것이다. File.Move(args[0],"c:\\crp");

그러니까 이게 맞는 것 같아요. File.Move(args[0],"c:\\crp\\a.a");

입니다.File.Copy

Visual studio를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 클릭합니다.

+1 감사합니다

문제가 있는 IIS 웹 사이트인 경우 사이트 또는 응용 프로그램이 사용하는 응용 프로그램 풀에 대한 고급 설정의 ID 속성을 확인합니다.ApplicationPoolIdentity로 설정되어 있는 경우가 있습니다.이 경우 이 사용자는 경로에 액세스 할 필요가 있습니다.

또는 이전 스타일을 변경하여 ID를 네트워크 서비스로 설정하고 네트워크 서비스 사용자에게 경로에 대한 액세스 권한을 부여할 수 있습니다.

나도 마찬가지야, 나는 파일 대신 폴더를 가리키고 있었어.

path + path를 부여해 주세요.

System.IO.File.WriteAllBytes("path", bytearray);

삭제하거나 저장하려는 폴더의 권한을 수정해야 합니다.포함된 폴더를 마우스 오른쪽 버튼으로 클릭하고 보안 탭을 사용하여 응용 프로그램을 실행하는 사용자에 대한 수정 권한을 허용합니다.

부정 액세스예외 예외는 운영 체제가 I/O 오류 또는 보안 오류로 인해 액세스를 거부하면 발생합니다.

파일 또는 레지스트리 키에 액세스하려고 하는 경우는, 그 키가 읽기 전용이 아닌 것을 확인해 주세요.

윈도우 서비스가 예외를 발생시키기 시작했을 때도 이 문제에 직면했습니다.

System.UnauthorizedAccessException: Access to the path "C:\\Order\\Media
44aa4857-3bac-4a18-a307-820450361662.mp4" is denied.

그래서 해결책으로 아래 화면 캡처와 같이 서비스와 관련된 사용자 계정을 확인했습니다.

여기에 이미지 설명 입력

그래서 제 경우는 NETWORK SERVICE였습니다.

그런 다음 폴더 속성으로 이동하여 권한 탭 아래에 연결된 사용자 계정도 있는지 확인합니다.제 케이스에서 누락되어 추가했을 때 문제가 해결되었습니다.

자세한 내용은 아래 화면 캡처를 확인하십시오.

여기에 이미지 설명 입력

I/O 오류 또는 특정 유형의 보안 오류로 인해 운영 체제가 액세스를 거부할 때 발생하는 예외입니다.

나도 똑같은 걸 쳤어파일이 숨겨져 있지 않은지 확인합니다.

파일 속성을 확인합니다.읽기 전용이 선택되어 있는 경우는, 오프합니다.이것은 부정 액세스에 관한 개인적인 문제였습니다.예외.

나는 이 오류를 발견하고 단숨에 해결했다.모든 폴더가 읽기 전용인 이유를 알 수 없습니다.(읽기 전용을 취소하고 적용했습니다.)그러나 여전히 읽기 전용입니다.그래서 파일을 루트 폴더로 옮겼는데, 정말 이상해요.

이 에러가 발생한 것은

내가 끔가제 sometimes sometimes sometimes Combine파일 이름이 있는 경로FileName = ""

되다Path Directory 푼도file그것은 위에서 말한 것과 같은 문제이다.

꼭 .FileName

if(itemUri!="")
        File.Delete(Path.Combine(RemoteDirectoryPath, itemUri));

시스템을 사용하려고 했습니다.IO.파일OpenWrite(패스)

OpenWrite()의 디렉토리 경로만 전달했기 때문에 동작하지 않았습니다만, 쓰고 싶은 파일의 경로까지 필요합니다.파일명을 포함한 전체 경로입니다.Unauthorized Access를 피하기 위해 끝의 내선번호를 OpenWrite로 전달해야 합니다.예외.

내 경우 문제는 Norton이었다.사내 프로그램에 적절한 디지털 서명이 없기 때문에 파일을 삭제하려고 하면 Unauthorized Access를 실행했습니다.예외.

여기에 이미지 설명 입력

알림이 오면 거기서 처리하면 됩니다.제 경우, 제가 알아차린 알림이 표시되지 않았습니다.Norton이 프로그램을 차단하지 않도록 하는 방법은 다음과 같습니다.

  1. Norton을 열다
  2. 아래 화살표를 클릭합니다.
  3. [내역]을 클릭합니다.
  4. 프로그램별 활동 찾기
  5. 기타 옵션 클릭
  6. 프로세스 제외를 클릭합니다.

이 문제를 해결하기 위해 저는 디버깅 시스템의 Scot Hanselman 접근 방식을 따릅니다.부정 액세스예외(종종: Access to the path is denied) 기사. 예를 들어 다음과 같은 코드가 있습니다.

class Program
{
    static void Main(string[] args)
    {
        var path = "c:\\temp\\notfound.txt";
        try
        {
            File.Delete(path);
        }
        catch (UnauthorizedAccessException)
        {
            FileAttributes attributes = File.GetAttributes(path);
            if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
            {
                attributes &= ~FileAttributes.ReadOnly;
                File.SetAttributes(path, attributes);
                File.Delete(path);
            }
            else
            {
                throw;
            }
        }
    }
}

공유 서버의 새로 옮긴 웹사이트에서도 같은 문제가 발생했습니다.웹 호스트 패널(DotNetPanel) 설정을 통해 "쓰기 권한 허용"이 참으로 해결됩니다.따라서 서버 구성을 검토할 가치가 있는 모든 코드를 확인하기 전에 공유 서버에 있는 경우 시간을 대폭 절약할 수 있습니다.

코드에서 공유 폴더 경로에 도달하려는 경우 보안 탭을 통해 물리적 폴더에 적절한 권한만 부여할 필요는 없습니다.또한 Share 탭을 통해 해당 앱 풀 사용자와 폴더를 "공유"해야 합니다.

파일을 삭제할 때 정확한 오류가 발생했습니다.이 서비스는 서비스 계정으로 실행되고 있는 Windows 서비스입니다.공유 폴더에서 .pdf 문서를 삭제할 수 없었습니다.

[공유 폴더(Shared Folder)]> [상세설정(Advanced)]> [공유(Share)]> [추가(Add)]의 [보안(Security)]탭으로 이동합니다.

그런 다음 관리자 그룹에 서비스 계정을 추가하고 변경을 적용하면 서비스 계정이 해당 폴더 내의 모든 파일에 대해 모든 작업을 수행할 수 있습니다.

UWP(Universal Windows) 응용 프로그램을 만들려는 사용자의 경우 파일 권한이 훨씬 제한되며 기본적으로는 거부됩니다.또한 시스템 사용자 권한보다 우선합니다.기본적으로 다음 중 하나의 파일에만 액세스할 수 있습니다.

  • 설치 장소
  • AppData 위치
  • 파일 또는 폴더 선택기를 통해 선택한 파일
  • 앱 매니페스트에서 요청된 위치

자세한 내용은 여기를 참조하십시오. => https://learn.microsoft.com/en-us/windows/uwp/files/file-access-permissions

BitDefender를 사용하는 경우 Safe Files 기능으로 인해 작업이 차단될 가능성이 높습니다.이것은 고급 버전 중 일부와 함께 제공되는 랜섬웨어 보호의 한 형태입니다.

BitDefender에서 응용 프로그램에 대한 액세스 권한을 부여하고 다시 시도하십시오.

자세한 내용은 이 BitDefender 지원 페이지를 참조하십시오.

제 경우 AVG 안티바이러스가 예외를 트리거했습니다.

VS Projects 디렉토리를 "허용" 목록에 추가했습니다.그리고 AVG 예외 목록에 실행 파일을 추가해야 했습니다..exe내 앱 디렉토리로 이동합니다.

저도 같은 문제가 있어서 파일을 저장할 파티션을 변경하여 간신히 작동시킬 수 있었습니다.5번째 줄에서는 @"C:\"를 @"D:\"로 변경하여 문제를 해결했습니다.

static void SaveVideoToDisk(string link)
{
    var youTube = YouTube.Default; // starting point for YouTube actions
    var video = youTube.GetVideo(link); // gets a Video object with info about the video
    File.WriteAllBytes(@"D:\" + video.FullName, video.GetBytes());
}

에서 이행한 후Visual Studio 2017로.Visual Studio 20192개의 어플리케이션과 함께 2개의 예외에 직면했습니다.Visual Studio 2017:

  • System. 부정 액세스예외.
  • System. 인수예외.

알고 보니 두 애플리케이션의 실행 파일을 다음 앱에 추가해야 했습니다.Avast Antivirus.

서버에 전개한 후, 이것을 실시하려고 했을 때에도, 같은 문제에 직면했습니다.

dirPath = Server.MapPath(".") + "\\website\\" + strUserName;
if (!Directory.Exists(dirPath))
{
    DirectoryInfo DI = Directory.CreateDirectory(dirPath);
}
string filePath = Server.MapPath(".") + "\\Website\\default.aspx";
File.Copy(filePath, dirPath + "\\default.aspx", true);
File.SetAttributes(dirPath + "\\default.aspx", FileAttributes.Normal);

관리자를 포함한 다른 그룹에 IIS 권한을 부여하여 문제가 해결되었습니다.

특히 10000개의 폴더를 만들고 삭제하는 작업을 반복했습니다.내가 보기에는 그 방법이 문제였던 것 같다.Directory.Delete(path, true)이 반환되는 경우 하위 OS 메커니즘이 여전히 디스크에서 파일을 삭제하고 있을 수 있습니다.오래된 폴더를 삭제한 직후에 새로운 폴더를 작성하기 시작하면 아직 완전히 삭제되지 않았기 때문에 일부 폴더는 여전히 잠겨 있습니다.그리고 나는 시스템을 얻을 것이다.부정 액세스예외: "경로에 대한 액세스가 거부되었습니다."

여기에 이미지 설명 입력

「」를 사용합니다.Thread.Sleep(5000) 후에Directory.Delete(path, true)을 사용하다저는 이것이 안전하지 않다는 것에 전적으로 동의하며, 누구에게도 사용을 권장하지 않습니다.이 문제를 해결하기 위해 더 나은 방법을 제시하여 답변을 개선했으면 합니다.이제 이 예외가 발생하는 이유를 설명하겠습니다.

class Program
{
    private static int numFolders = 10000;
    private static string rootDirectory = "C:\\1";

    static void Main(string[] args)
    {
        if (Directory.Exists(rootDirectory))
        {
            Directory.Delete(rootDirectory, true);
            Thread.Sleep(5000);
        }

        Stopwatch sw = Stopwatch.StartNew();
        CreateFolder();
        long time = sw.ElapsedMilliseconds;

        Console.WriteLine(time);
        Console.ReadLine();
    }

    private static void CreateFolder()
    {
        var one = Directory.CreateDirectory(rootDirectory);

        for (int i = 1; i <= numFolders; i++)
        {
            one.CreateSubdirectory(i.ToString());
        }
    }
}

먼저 드라이브 문자 뒤에 콜론(:) 문자가 없는지 경로를 확인합니다.콜론이 누락되지 않은 경우 해당 경로에 액세스/쓰기 권한이 부여되었는지 여부를 확인할 수 있습니다.저도 같은 문제가 있어서 결장, 허가서, 그리고 다른 건 다 괜찮았어요.

C:\folderpath

잘 되겠지만

C\folderpath .........(missing colon)

액세스 거부 에러가 표시됩니다.

저도 같은 문제로 이 게시물을 접하게 되었습니다.파일이 사용 중이어서 쓸 수 없는 것 같습니다.알 수 없지만 어떤 프로세스가 사용하고 있는지.그 박스에 로그인하고 있던 다른 유저를 로그아웃 했지만, 그 유저를 보관 유지하고 있는 유저는 표시되지 않았다.같은 것을 찾는 방법에 대한 간단한 힌트.

감사합니다, 락셰이(개발자)

언급URL : https://stackoverflow.com/questions/8821410/why-is-access-to-the-path-denied

반응형