2009-06-17 7 views
10

FTPClient 라이브러리를 사용하여 Windows 공유에서 FTP 서버로 파일을 전송하고 있습니다. 그러나 나는 아래에 Windows 탐색기를 사용하여 파일을 열고, 이름 변경 및 이동 수 있어요, 이것은 System.UnauthorizedAccessException 결과파일 액세스가 거부되었습니다.

FileStream stream = new FileStream(localFileName, FileMode.Open); 

가 슬로우 :

라이브러리의 sendfile을 방법은 다음과 같은 코드를 사용 코드가 실행되는 동일한 사용자 계정

왜 이런 일이 일어 났는지 말해 줄 수 있습니까?

편집 :

이상한 것은 내가 그 내가 할 수없는 것과 같은 NTFS 권한이 부여 된 공유에 다른 파일에 액세스 할 수 있다는 것입니다.

이것은 또한 Windows 양식 앱입니다.

업데이트 :이 아직도

행운. 파일 스트림이 아닌 StreamReader을 사용하여 파일을 읽을 수 있습니다. 두 사람이 왜 다르게 행동하는지 이해할 수 없습니다. 는 IIS MMC 콘솔 FTP 사이트 내에서 탐색기

2)를 사용하여 실제 디렉터리에

+0

당신은 '윈도우 형태의'앱 또는 ASP.NET 페이지에서이 호출? – russau

+0

에서 Windows 양식 앱 –

+1

언제든지 공유에서 응용 프로그램을 실행하고 있습니까? 나는 .net (기본적으로)이 할 때 응용 프로그램의 사용 권한을 감소 시킨다는 것을 알고 있습니다. – russau

답변

1

파일에 대한 권한이없는 코드를 실행중인 프로세스를 검사 할 때 실제로 존재한다. 웹 응용 프로그램의 일부입니까? 그렇다면 ASPNET 계정에 대한 액세스 권한을 부여해야합니다.

파일에 '모든 사람에게'권한을 부여하고 파일에 여전히 문제가 있는지 확인하십시오.

0

프로젝트가 네트워크 드라이브에서 실행되고 있습니까? 그렇다면 제한된 권한 모드로 실행된다는 것을 의미합니다. 프로젝트를 C 드라이브에 복사하고 다시 실행하십시오.

+0

아니요. 기본 로컬 프로젝트 디렉토리의 Visual Studio 내에서 디버그 모드로 실행 중입니다. 파일을 UNC 경로를 통해 액세스하려고합니다. 예 : \\ server \ share \ file하지만 내가 올바른 권한을 가지고있는 동안 (나는 Full Access를 가졌음) 문제가 아니어야합니까? –

27

동일한 사용자 계정이 맞습니까? 당신은

MessageBox.Show(WindowsIdentity.GetCurrent().Name); 

같은 것을 사용해 볼 수 있습니까?

또한 파일이 읽기 전용이 아닌가요? 파일에 대한 쓰기 권한이 필요합니까? 그렇지 않으면 시도해 볼 수 있습니다.

FileStream stream = new FileStream(localFileName, FileMode.Open, FileAccess.Read); 
+0

예. 같은 계정입니다. –

+12

답변 해 주셔서 감사합니다. 내 파일은 읽기 전용 이었지만 쓰기 권한을 요청하지 않았기 때문에 FileAccess.Read를 정의하는 것이 불필요하다고 가정했습니다. 내가 틀렸어. FileAccess.Read를 추가하는 것이 핵심이었습니다. –

0

FileSecurity 클래스와 비슷합니다.

FileSecurity class

에서 참조하십시오 :

 // Get a FileSecurity object that represents the 
     // current security settings. 
     FileSecurity fSecurity = File.GetAccessControl(localFileName); 

     // Add the FileSystemAccessRule to the security settings. 
     fSecurity.AddAccessRule(new FileSystemAccessRule("DOMAIN\USERNAME", 
      FileSystemRights.ReadData, AccessControlType.Allow)); 

     // Set the new access settings. 
     File.SetAccessControl(localFileName, fSecurity); 
+0

그 결과는 다음과 같습니다. 처리되지 않은 예외 : System.Security.Principal.IdentityNotMappedException : 일부 또는 모든 ID 참조를 변환 할 수 없습니다. 이 설정과 관련된 도메인 트러스트가 있습니다. 예를 들어,이 파일에 대한 액세스 권한이 부여 된 다른 도메인의 그룹 회원입니다.이 도메인에 영향을 미치는지 궁금합니다. –

+0

"DOMAIN \ USERNAME"문자열을 변경 했습니까? – Chernikov

+0

죄송합니다.하지만 "\"을 (를) 잊어 버린 것을 잊어 버렸습니다. 이제는 정상적으로 실행되었지만 여전히 파일에 액세스 할 수 없습니다. –

관련 문제