В основном у меня та же проблема, что и в этом посте Доступ к подключенным дискам при олицетворении в 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
И-санитизированный тест:
if (impUtility.ImpersonateUser("user", "password", string.Empty))
{
fu.SaveAs(@"C:\Images\" + imgName);
}