Added test class to impersonate a local acct.

nullableenabled
David Hall 2023-10-31 17:02:18 -06:00
parent d0fc6a0f70
commit e7d92752e7
1 changed files with 23 additions and 0 deletions

View File

@ -0,0 +1,23 @@
using static Vanara.PInvoke.AdvApi32;
namespace Vanara.PInvoke.Tests;
public class ImpersonatedUser : IDisposable
{
private readonly SafeHTOKEN hToken;
public ImpersonatedUser(string un, string pwd, string? svr = null)
{
if (!(svr?.StartsWith('\\') ?? false))
svr = $@"\\{svr}";
Win32Error.ThrowLastErrorIfFalse(LogonUser(un, svr, pwd, LogonUserType.LOGON32_LOGON_NETWORK, LogonUserProvider.LOGON32_PROVIDER_DEFAULT, out hToken));
Win32Error.ThrowLastErrorIfFalse(ImpersonateLoggedOnUser(hToken));
}
public void Dispose()
{
RevertToSelf();
((IDisposable)hToken).Dispose();
GC.SuppressFinalize(this);
}
}