.NET Thick-Client 앱에서 Windows 공유에 액세스 할 수있는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/940529

문제

클라이언트가 로그온 할 수없는 공유에서 리소스에 액세스 해야하는 두꺼운 클라이언트가 있습니다. 클라이언트는 Windows 도메인에 있거나 도메인이없는 혼합 환경 일 수 있으므로 사용자는 서버에 로컬로 로그온해야합니다. 과거에는 한 가지 작업은 사용자의 데스크탑에 공유에 대한 바로 가기를 만드는 것이 었습니다. Windows Explorer에 의존하지 않고 사용자가 공유에 사인을하도록하려면 어떻게해야합니까? Windows Explorer는 앱을 공유에 액세스하도록 요구할 수 있도록 무엇을합니까?

내가 읽고 C# 웹 앱에서 네트워크 공유에서 파일에 액세스, 그러나 나는 이것을 Winforms 앱에서 수행하고 있으며 대화식이되기를 원합니다. 나도 읽었습니다 암호를 자랑하는 방법, 그러나이 코드는 주식에 대한 액세스를 요구하고 부여하는 UI를 호출하는 대신 사용자의 문자열을 촉구합니다. 오히려 내 앱이 네트워크 리소스에 대한 액세스를 요구하기 위해 OS를 트리거하는 것만 큼 사용자의 암호를 알지 못합니다.

도움이 되었습니까?

해결책

Win32 API CreduipromptforCredentials (또는 Vista/Win2k8에서 실행중인 경우 Creduipromptforwindowscredential을 살펴볼 수 있습니다. Winver를 확인하여 어떤 전화를할지 결정해야합니다).

이 방법은 실제로 일반 자격 증명 프롬프트를 호출하지만 자격 증명을 얻습니다 (끔찍한, 알고 있습니다).

pinvoke.net이 있습니다 샘플 코드 C# 에서이 함수를 호출하는 방법을 보여줍니다 (Pinvoke 샘플에서 save에서 false를 지정하면 깃발을 위해 credui_flags.do_not_persist를 전달해야합니다. 이상하게, 나는 알고 있습니다).

대왕에 대한 더 많은 정보 (및 관리되지 않는 샘플) Keith Brown Wikibook 보안에

보안 문자열로 자격 증명을 받으면 사용자가 자원을 사칭하여 리소스에 도달 할 수 있습니다 (Logonuser 사용).

그리고 못 생겼어. Windows가 표준 프롬프트 대화 상자를 표시하고 자격 증명에 대해 알고 싶지 않다는 것을 알고 있습니다.

System.diagnostics.process를 사용하는 것과 같은 못생긴 해킹이 원격 UNC에서 숨겨진 탐색기를 시작하는 것과 같은 트릭을 수행하지 않을지 궁금합니다. 사용자가 자격 증명을 입력하고 스폰 된 탐색기 프로세스를 죽일 때까지 기다릴 수있는 방법을 찾아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top