2014-03-06 1 views
3

사용자는 응용 프로그램을 시작할 때 Windows 자격 증명으로 로그인해야합니다. 이러한 자격 증명은 사용자를 가장하고 제공된 로그인으로 기본 양식을 실행하는 데 사용됩니다. 이제 사용자가 파일을 선택할 수있는 OpenFileDialog을 갖습니다.가장 할 때 OpenFileDialog를 사용하여 매핑 된 드라이브에 액세스

사용자가 매핑 된 네트워크 드라이브에 액세스 할 때 문제가 발생합니다 (시스템에 로그온 한 사용자가 어떻게 든 내 프로그램이 아닌 것으로 표시됨). OK 버튼을 누르면 OpenFileDialog에 오류 메시지가 표시됩니다 (경로를 찾을 수 없거나 액세스 할 수 없습니다. 있는지 확인하십시오).

다른 게시물에서 보았 듯이이 경로를 UNC 경로로 다시 매핑 할 수는 있지만 대화 상자가 반환되지 않아서 수행 할 수 있습니다. 내 자신의 열린 파일 대화 상자를 만드는 것 외에 다른 해결 방법이 있습니까?

도용 부분 : 대화 상자를 표시하기 전에

bool success = NativeMethods.LogonUser(userName, domain, password, (int)LogonType.Logon32LogonNewCredentials, (int)LogonProvider.Logon32ProviderWinnt50, ref pExistingTokenHandle); 
if (success) 
{ 
    success = NativeMethods.DuplicateToken(pExistingTokenHandle, (int)SecurityImpersonationLevel.SecurityImpersonation, ref pDuplicateTokenHandle); 
    if (success) 
    { 
     // Return the impersonation context 
     WindowsIdentity identity = new WindowsIdentity(pDuplicateTokenHandle); 
     impersonationContext = identity.Impersonate(); 
     return impersonationContext; 
    } 
} 

열기 대화 상자 부분

OpenFileDialog openFileDialog = new OpenFileDialog 
{ 
    Multiselect = true, 
    InitialDirectory = Environment.CurrentDirectory, 
    Title = "Select file" 
}; 
bool? dialogResult = openFileDialog.ShowDialog(this); 
if (dialogResult.Value) 
{ 
    openFileDialog.FileNames.ToList().ForEach(t => MessageBox.Show("File: " + t)); 
} 
+0

상승 된 권한으로 애플리케이션을 실행 해 보셨습니까? – Kcvin

+0

예,하지만 드라이브 매핑을 제공하지 않습니다. – Scoregraphic

답변

0

실행 취소의 가장 네트워크 드라이브에있는 파일을 선택하는 문제를 해결했다. 서비스 계정이 네트워크 드라이브에 액세스해야 할 수도 있으므로 질문 자체는 유효합니다.

관련 문제