internal static int LogonUser(string username, string domain, string password)
{
int error = 0;
IntPtr hToken = IntPtr.Zero;
bool result = SafeNativeMethods.LogonUser(username, domain, password,
(int)SafeNativeMethods.LogonType.LOGON32_LOGON_NETWORK,
(int)SafeNativeMethods.LogonProvider.LOGON32_PROVIDER_DEFAULT,
out hToken);
if (!result)
{
error = Marshal.GetLastWin32Error();
Abstractions.Logging.LibraryLogging.Debug("LogonUser:{0} {1} {2}", result, error, LastError());
}
if (hToken != IntPtr.Zero) CloseHandle(hToken);
return error;
}