2013-06-02 2 views
2

내 네트워크 공유가 일부 PC에 있습니다. Windows 탐색기에서 드라이브 문자 등으로 볼 수 있습니다. C#으로 읽거나 쓰려고하면 항상 DirectoryNotFoundException이됩니다. 디렉토리가C# - 마운트 된 네트워크 드라이브에 대한 액세스

Directory.Exists(@"N:\test") 

반환 false을 (N:\가 장착 된 주입니다)이있는 경우 방법은 확인합니다. 탐색기에서 경로를 열면 경로가 존재합니다.

문제는 무엇인지 상상할 수 있습니까?

감사합니다.

+0

나를 위해 잘 작동하고 테스트를 마쳤습니다. – jAC

+0

알겠습니다. 고마워요. 왜 그것이 작동하지 않아야할지 모르겠다. 로컬 드라이브처럼 액세스 가능해야합니다. – user2445254

+0

'test' 폴더가 있습니까? 파일 탐색기로 해당 경로를 탐색 할 수 있습니까? – jAC

답변

1

를 알 수 없다 생각 응용 프로그램을 관리자로 설정하고 실패했습니다. 따라서 코드를 실행하는 사용자에게는 경로에 대한 액세스 권한이 없기 때문에 그 이유가 가장 가능성이 큽니다.

당신은 당신이 참으로 상승 된 권한으로 응용 프로그램을 실행하고 있음을 확인, 당신은이 대답에 제안 표시를 따라야합니다 https://stackoverflow.com/a/11268410/674700 :

(...) 관리 명령 프롬프트를 엽니 다 - 상승 된 토큰을 항상 가지고 있으며 (net use h : \ server \ share1)에서 일치하는 드라이브 매핑을 만듭니다. 일반 사용자와 관리자가 상승한 관리자는 "H :"드라이브 의 의미에 대해 공통적으로 이해하므로 모든 것이 잘 돌아갑니다.

+1

드라이브는 단순히 드라이브를 매핑 한 사용자로 매핑됩니다. 합리적이지, 안 그래? 드라이브를 사용자로 매핑하고 관리자로 프로그램을 실행하면 관리자는 드라이브를 매핑하지 않습니다. – user1908061

+0

맞습니다. –

0

글쎄 나는이 예외를 얻을 수있는 이유를 가정하려고합니다.

우선 네트워크 적응 형 드라이브의 경우 Directory.Exists() 메서드가 제대로 작동합니다. 당신이 당신의 일에 DirectoryNotFoundException을 얻는 이유가 몇 가지 더있을 수 있습니다.

MSDN;

지정한 파일이 있는지 확인하는 동안 오류가 발생하면 Exists 메서드는 false를 반환합니다. 이 문자 또는 너무 많은 문자, 실패 또는 누락 된 디스크 또는 파일을 읽을 수있는 호출자가 파일 이름을 전달하는 경우 예외를 발생시키는 상황에서 발생할 수 있습니다.

난 당신이 중 하나를 가지고 있지만 우리가 컴퓨터를 액세서 수 없기 때문에, 우리는 진짜 이유 : 난 그냥이 프로그램을 실행할 때이 작동하는지 테스트