기본적으로 내가 기존 웹 사이트에 일하고 있어요이 게시물 Accessing mapped drives when impersonating in ASP.NET는 가장
같은 문제를 실행 해요를 사용하여 매핑 된 드라이브에 쓸 수 없습니다와 나는 관리자가 사이트의 로고, 배너를 변경할 수 있도록해야합니다 데스크탑의 이미지 파일에서 서버의 매핑 된 드라이브로 이동합니다.
그래서 웹 사이트는 드라이브에 저장해야 할 때마다 가장을 사용하고 있으며 정상적으로 작동합니다. 그러나 나는 그들의 테스트 환경이나 테스트 환경에서 작동하도록 할 수는 없다.
¿ 어떤 아이디어가 있습니까? 사용자와 암호를 두 번 확인했습니다 (코드가 도메인을 지정하지 않음). 문제가 아닙니다.
public bool ImpersonateUser(String user, String password, String domain)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUserA(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token) != 0)
{
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
if (impersonationContext != null)
{
CloseHandle(token);
CloseHandle(tokenDuplicate);
return true;
}
}
}
}
//... rest of the code
그리고 -sanitized- 시험 :
if (impUtility.ImpersonateUser("user", "password", string.Empty))
{
fu.SaveAs(@"C:\Images\" + imgName);
}
@ Ed B : 감사합니다. 나는 그것을 시험해 보겠습니다. 나는 몇 가지 질문을 가지고있다 : 1)이 솔루션은 모든 관리자가 동일한 계정으로 로그인해야 함을 의미합니까? 2) 왜 각 사용자에 대해 매핑 된 드라이브를 만들어야하는지 알지 못했습니다. 예에서 관리자는 계정으로 로그인하지만 디스크에 쓸 때 사용되는 사용자 이름과 암호는 Web.config –
에서 가져온 권한있는 계정에서 가져온 것입니다. 사용자가 이미 Windows 자격 증명으로 사이트에 로그인 한 경우 위와 같이 대상 컴퓨터에서 로그인 한 사용자의 신원을 가장 할 수 있습니다. 2. 좋아, 나는 특권 계좌가 있다는 것을 깨닫지 못했다. 매핑 된 드라이브를 사용하여 이미 설정된 계정으로 작업 할 수있는 매핑 된 드라이브 방법을 얻지 못했습니다. –