[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!
const int LOGON32_LOGON_INTERACTIVE = 2;
const int LOGON32_LOGON_NETWORK = 3;
const int LOGON32_LOGON_BATCH = 4;
const int LOGON32_LOGON_SERVICE = 5;
const int LOGON32_LOGON_UNLOCK = 7;
const int LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
const int LOGON32_LOGON_NEW_CREDENTIALS = 9;
const int LOGON32_PROVIDER_DEFAULT = 0;
IntPtr hToken;
IntPtr hTokenDuplicate;
if (LogonUser(username, domain, password,
LOGON32_LOGON_INTERACTIVE, 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