В основном у меня та же проблема, что и в этом сообщении Доступ к подключенным дискам при выдаче себя за другое лицо в 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);
}