Я бы попытался использовать необработанный метод LogonUser
, как показано в документации WindowsIdentity.Impersonate .
В основном войдите в систему как пользователь, а затем пользователь этого токена, чтобы выдать себя за этого пользователя:
bool returnValue = LogonUser(userName, domainName, password,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
out safeTokenHandle);
using (WindowsImpersonationContext impersonatedUser =
WindowsIdentity.Impersonate(userToken)
{
Console.WriteLine("After impersonation: " + WindowsIdentity.GetCurrent().Name);
MyLib.Component com = new MyLib.Component();
}
Выше приведен упрощенный некомпилируемый фрагмент, основанный на коде MSDN для демонстрации общего подхода.
Плохая часть заключается в том, что пароль должен быть предоставлен LogonUser
способ.