.Net은 폴더 탐색을위한 FolderBrowserDialog 컨트롤을 제공합니다. 그러나 이것은 모달 대화 상자입니다. 내 양식에 놓을 수있는 사용자 정의 컨트롤을 만들어야합니다. 그래서 필자는 모든 로컬 드라이브, 매핑 된 네트워크 드라이브, UNC 공유 및 웹 폴더 (WebDAV/SharePoint)를 가져와야 할 곳을 직접 만들려고했습니다. Windows 7과 .Net 4.0을 사용하고 있습니다.C#에서 네트워크 공유 및 웹 폴더를 어떻게 열거 할 수 있습니까?
로컬 및 매핑 된 네트워크
내가 DriveInfo.GetDrives에서 로컬 드라이브를 얻을 수 있습니다 드라이브(). 그러나 이것들은 나에게 사용 가능한 온라인 드라이브만을 보여줍니다. Windows 탐색기에서는 연결이 끊어져 있거나 사용할 수없는 매핑 된 네트워크 드라이브도 표시됩니다.
네트워크 폴더/UNC 공유 내가 지금까지 발견 한 것과
은 UNC 공유를 열거하는 닷넷의 메커니즘이있을 나타나지 않습니다. Inter32 to Win32 API를 사용하여 WNetOpenEnum
및 WNetEnumResource
함수를 사용하여 네트워크 환경을 열거해야하는 것으로 보입니다. 나는이 일을하고 있지만 다른 방법이 없는지 궁금해하고 있었다. Windows 탐색기에서
웹 관리 (WebDAV) 폴더 및 SharePoint
나는 약간의 WebDAV 폴더를 구성했습니다. WNetOpenENum
및 WNetENumResource
위의 동일한 Interop 호출을 사용하여 "웹 클라이언트 네트워크"노드가 있고 연결되어 액세스 할 수있는 WebDAV 폴더가 나타납니다.
질문
- 어떻게 구성되어있는 매핑 된 네트워크 드라이브를 얻을 수 있지만, 오프라인합니까?
- UNC 공유를 열거 할 다른 방법이 있습니까? 아니면 위의 interop 호출을 사용하여 붙어 있습니까?
WNetEnumResource
은 "Microsoft 터미널 서비스"의 빈 노드를 반환했습니다. 영어 텍스트를 기준으로 필터링하지 않고 어떻게이를 필터링 할 수 있습니까?WNetEnumResource
에 의해 반환 된 웹 폴더는 내가 만들 때 내가 할당 한 사용자 친숙한 이름이 아니지만 IP-Address @ Port 형식으로되어 있습니다.\\[email protected]
. 웹 폴더의 사용자에게 익숙한 이름을 얻으려면 어떻게해야합니까?- 오프라인 상태였던 웹 폴더는 전혀 표시되지 않았지만 Windows 탐색기에서는 표시됩니다. 오프라인 상태 인 것을 얻으려는 제안?
흥미롭게도 로컬로 정의 된 공유에 액세스하는 데 적합합니다. 내가 관심을 갖는 것은 \\ OtherComputer \ SomeShare와 같이 네트워크상의 다른 컴퓨터에 정의 된 공유이다. – Elan
WMI에 익숙하십니까 ..? 관심이있는 경우 다른 원격 시스템을 쿼리하는 방법에 대한 샘플을 보내 드리겠습니다. – MethodMan
예, 제가 가고 싶은 곳으로 가는데 도움이된다면 해주세요. :) – Elan