[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, LOGON_TYPE dwLogonType, LOGON_PROVIDER dwLogonProvider, out IntPtr phToken);
Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Integer, _
ByVal dwLogonProvider As Integer, ByRef phToken As IntPtr) As Integer
As always, only do SetLastError=true if you actually intend to call GetLastError.
Please add some!
IntPtr hToken;
IntPtr hTokenDuplicate;
if (LogonUser(username, domain, password, LOGON_TYPE.LOGON32_LOGON_INTERACTIVE, LOGON_PROVIDER.LOGON32_PROVIDER_DEFAULT, out hToken))
{
if (DuplicateToken(hToken, 2, out hTokenDuplicate))
{
windowsIdentity = new WindowsIdentity(hTokenDuplicate);
impersonationContext = windowsIdentity.Impersonate();
}
}
if (hToken != 0) CloseHandle(hToken);
if (hTokenDuplicate != 0) CloseHandle(hTokenDuplicate);
TODO