[DllImport("advapi32.dll")]
public static extern bool LogonUser (String lpszUsername, String lpszDomain, String lpszPassword,
int dwLogonType, int dwLogonProvider, ref 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
None.
It is very important to know which LOGON type you need. LOGON_NETWORK will allow access to network resources, while LOGON_INTERACTIVE will not. This will cause you hours of consteration if you don't pay attention to it.
To make this useful, you will also need to implement DuplicateToken.
After a successful Logon, you can also use ImpersonateLoggedOnUser (also in advapi32).
Please add some!
const int LOGON32_LOGON_NETWORK = 3;
Int16 LOGON32_LOGON_INTERACTIVE = 2;
Int16 LOGON32_PROVIDER_DEFAULT = 0;
if(LogonUser(userName, domain, passWord, interactiveValue, LOGON32_PROVIDER_DEFAULT, ref token))
{
if(DuplicateToken(token, 2, ref tokenDuplicate))
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
if(impersonationContext == null)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
else
{
return false;
}
TODO