Dev2.Impersonator.Impersonate C# (CSharp) Method

Impersonate() public method

public Impersonate ( string userName, string domain, string password ) : bool
userName string
domain string
password string
return bool
        public bool Impersonate(string userName, string domain, string password)
        {
            var token = IntPtr.Zero;
            var tokenDuplicate = IntPtr.Zero;

            if(RevertToSelf())
            {
                if(LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out token))
                {
                    if(DuplicateToken(token, 2, out tokenDuplicate) != 0)
                    {
                        var tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
                        _impersonationContext = tempWindowsIdentity.Impersonate();
                        if(_impersonationContext != null)
                        {
                            CloseHandle(token);
                            CloseHandle(tokenDuplicate);
                            return true;
                        }
                    }
                }
            }
            if(token != IntPtr.Zero)
            {
                CloseHandle(token);
            }
            if(tokenDuplicate != IntPtr.Zero)
            {
                CloseHandle(tokenDuplicate);
            }
            return false;
        }

Usage Example

示例#1
0
        public static bool RunAs(string userName, string domain, string password, Action action)
        {
            var result = false;

            using (var impersonator = new Impersonator())
            {
                if (impersonator.Impersonate(userName, domain, password))
                {
                    action();
                    result = true;
                }
            }

            return(result);
        }
All Usage Examples Of Dev2.Impersonator::Impersonate