고려 간단한 윈도우 네트워크 공유에 다음 UNC 경로 (SMB 프로토콜) : 쉽게의 인스턴스를 만들 수 있습니다는 기본 클래스 라이브러리 유형에 자격 증명을 사용하여 네트워크 경로를 구문 분석
\\host\share
System.Uri
또는 System.IO.DirectoryInfo
에 해당 경로를 문자열로 전달하여 생성자에 전달합니다.
지금 옆으로 모든 보안 문제를 떠나, 다음과 같은 두 가지 경로를 고려하십시오
\\[email protected]\share
\\username:[email protected]\share
당신은 단순히 열린 우리당이나의 DirectoryInfo 생성자에 다음을 전달할 수 없습니다 그들은 돈 때문에 리눅스 시스템에서 주로 사용되는 이러한 경로를 처리하는 방법을 알지 못합니다. 게다가, 그들이 수행 한 경우에도 로그온 자격 증명을 유지하지 못할 가능성이 큽니다.
궁극적으로 나는 이것을 실제 경로를 나타내는 System.Uri
의 인스턴스와 로그온 정보를 저장하는 System.Net.NetworkCredential
의 인스턴스로 변환하는 방법을 원합니다.
그래서이 문제를 어떻게 해결할 수 있습니까? 나는 어디서부터 시작해야할지 모른다. System.UriParser
에서 상속하는 것이 좋은 출발점이지만 MSDN에 따르면 권장하지 않습니다.
.NET Framework와 함께 제공되는 파서를 사용하는 것이 좋습니다. 자신의 파서를 작성하면 응용 프로그램의 복잡성이 증가하고 파서와 같이 잘 수행되지 않습니다.
감사합니다.
편집
(아래 게시 된) 간단한 솔루션은 실제 경로입니다 후 '@'기호가 로그온 자격 증명의 일부가 다되기 전에 그냥 모든 것을 가정하는 것입니다. 그러나 파일 이름에 '@'기호가 포함 된 경우 문제가 될 수 있습니다.
\\[email protected]\path
: 아무 문제
\\[email protected]\[email protected]
: 첫 번째 @ 전에 모든 로그온의 일부이기 때문에 다시 아무 문제.
\\host\[email protected]
: 이제 우리가 체포되었습니다. 이것은 인수로 전달 될 때 반드시 인수 예외를 발생시킵니다.
Erm은 UNC 경로가 아닙니다. UNC 경로는 사용자 이름과 암호 정보를 포함하지 않습니다. 따라서 자격 증명이있는 UNC 경로는 없습니다. – Joey
아, 죄송합니다. 나는 네가 맞다고 생각하지만, 다른 말로 생각할 수는 없다. –