Олицетворять весь процесс, а не просто поток
Я использую пакет SimpleImpersonation, который делает грязную работу вокруг некоторых внешних функций, например
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);
Я использую это так:
using (var imp = Impersonation.LogonUser(domain, user, password, LogonType.Interactive))
{
// another user
}
//me again
Проблема в том, что этот метод олицетворяет пользователя только для текущего потока, в то время как мне нужно выполнять действия под другими учетными данными из всех потоков моего приложения. Как этого добиться?