2014-12-18 5 views
6

이것은 특정 위치로 파일을 복사하려고 할 때 충돌하는 부분이며이 오류가 발생합니다.오류 : mscorlib.dll에서 'System.UnauthorizedAccessException'유형의 처리되지 않은 예외가 발생했습니다.

string startupDirectory = "C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"; 
File.Copy(startupDirectory, "Startup.exe"); 

나는 온라인 읽기 및 관리자 권한을 시도하고 "app.manifest"파일을 만들었습니다 : 내가 설정에서, 응용 프로그램 매니페스트가이 파일에 설정되어 있는지 확인

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
<requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

을하지만, 그것은 여전히 ​​나에게 같은 오류를 준다.

File.SetAttributes(startupDirectory, FileAttributes.Normal); 

이 윈폼과 나는 또한 윈도우 7에 오전하지만이 세계에 원하는 :이 디렉토리가 아닌 파일이기 때문에 나는 그것이 작동합니다 생각하지 않았지만

은 또한이 이벤트를 시도했다 Windows 8 이상. 어떻게해야합니까? 사전에

감사합니다!

+0

소스 파일 이름은 무엇입니까? startupDirectory 변수에서 언급 했습니까? – Avijit

+0

제목의 _solved_는 누구에게 도움이되지 않습니다. 주어진 답변과 별도로 해결책을 찾은 경우 자신의 질문에 대답하고 답변을 수락 할 수 있습니다. 다른 사람들도 같은 종류의 문제에 직면하게되면 도움이 될 것입니다. – mbx

답변

2

public static void Copy(string sourceFileName, string destFileName); 

첫 번째 오버로드를 시도 소스 2 과부하 목적지 나는 이유가있을 생각입니다이

File.Copy("Startup.exe",startupDirectory); 

액세스 권한을 설정하는 시도에서 닷넷 사용자에 대한 "모든 권한"에 당신은 파일을 읽고/저장하고 있습니다.

:

가 액세스를 들어 특정 파일에 대한 IIS 서버에서 오류를 거부의 아래이 반드시

UnauthorizedAccessException 한 3 가지 의미 액세스 거부 문제를 해결할 수

1- Goto to C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup 

2- Right click on your file -> Properties -> Pop Up of User properties appears -> click on Security tab-> click on Edit -> select Users-> tick on Allow Full Control -> Click Ok 

단계를 따르십시오

  • 호출자에게 필요한 권한이 없습니다.
  • 경로는 디렉토리입니다.
  • 경로에 읽기 전용 파일이 지정되었습니다.
+0

첫 번째 옵션에 혼란 스러워요 ... 두 번째와 세 번째는 작동하지 않으며 앞뒤로는 하나도 찾아 볼 수 없습니다 IIS_IUSRS – Nullone

+0

@ Tyler13579는 사용자에게 모든 권한을 부여합니다 –

+0

전체 컨트롤이 이미 선택되어 있고 회색으로 변하므로 변경할 수 없습니다 – Nullone

1

이 시도 :

File.Copy(startupDirectory, "Startup.exe", true); 
    File.SetAttributes("Startup.exe", FileAttributes.Normal); 
+0

그것은 나에게 같은 오류를 주었다. – Nullone

3

이 예외는 Windows 오류에 의해 트리거됩니다. 전용 "이 코드는 의미가 없습니다"오류 코드가 없으며 단지 "액세스 거부"오류 코드를 생성합니다. .NET이 UnauthorizedAccessException으로 변환됩니다.

여기서 "의미가 없습니다"라는 문제는 디렉터리을 파일 복사 방법으로 복사하려고한다는 것입니다. 디렉토리는 파일이 아닙니다. 디렉토리를 복사하려면 먼저 새 디렉토리를 작성한 다음 디렉토리에있는 모든 파일을 복사해야합니다. .NET에는 그 방법이 있습니다. 대부분의 C# 프로그래머는 '잘못된'네임 스페이스라고 생각하는 경향이 있습니다. Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory()입니다.

그러나이 문제에 대해 좀 더 생각해보아야합니다. 물론 "startup.exe"라는 새 디렉토리를 호출하는 것은 당연합니다.A는 아마도 특정 파일을 시작 디렉토리에서 복사하기위한 것이고, 우리는 그것이 무엇인지 추측 할 수 없습니다.

1

관리자 권한으로 Visual Studio를 실행할 수 있습니다. (Windows7을 가정하고 시작 메뉴에서 Visual Studio 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 클릭하십시오.)

관련 문제