LogonUser
Die API-Funktion LogOnUser versucht eine Anmeldung mit dem angegebenen Benutzernamen und Passwort durchzuführen. Ist die Anmeldung erfolgreich, so erhält man ein Token Handle welches dann verwendet werden kann um z.B. Prozesse unter dem angemeldeten Benutzerkonto auszuführen.
Declare Function LogonUser Lib "advapi32.dll" _ Alias "LogonUserA" ( _ ByVal sUsername As String, _ ByVal sDomain As String, _ ByVal sPassword As String, _ ByVal dwLogonType As Long, _ ByVal dwLogonProvider As Long, _ hToken As Long) As Long
Parameter
sUsername
- in: Name des Benutzerkontos.
sDomain
- in: Domäne in der das Konto existiert. Soll der lokale Computer verwendet werden, so kann "." übergeben werden.
sPassword
- in: Passwort des Kontos.
dwLogonType
- in: Art des Logons. Meist wird LOGON32_LOGON_BATCH=4 oder LOGON32_LOGON_INTERACTIVE=2 verwendet.
dwLogonProvider
- in: Provider der für den Logon verwendet werden soll. Meist LOGON32_PROVIDER_DEFAULT=0
hToken
- out: Token zur weiteren Verwendung. Nach Abschluss muss der Token mittels CloseHandle freigegeben werden.
Rückgabe(n)
Die Funktion gibt einen Wert des Types Long ungleich 0 bei Erfolg, den Wert 0 bei Misserfolg zurück.
Beispiel
Die in diesem Beispiel gezeigte Funktion, setzt bei Erfolg die weitere Programmausführung unter einem anderen Benutzerkonto fort. Um wieder zum Ursprünglichen Benutzerkontext zurückzukehren muss RevertToSelf aufgerufen werden.
Option Explicit Private Declare Function LogonUser Lib "advapi32.dll" Alias "LogonUserA" (ByVal sUsername As String, _ ByVal sDomain As String, ByVal sPassword As String, ByVal dwLogonType As Long, _ ByVal dwLogonProvider As Long, hToken As Long) As Long Private Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" ( _ ByVal hToken As Long) As Long Private Declare Function RevertToSelf Lib "advapi32.dll" () As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Const LOGON32_LOGON_INTERACTIVE As Long = 2 Private Const LOGON32_PROVIDER_DEFAULT As Long = 0 Public Function Logon(ByVal UserName As String, ByVal Password As String, ByVal Domain As String) As Boolean Dim hToken As Long RevertToSelf If LogonUser(UserName, Domain, Password, LOGON32_LOGON_INTERACTIVE, _ LOGON32_PROVIDER_DEFAULT, hToken) = 0 Then Exit Function End If Logon = ImpersonateLoggedOnUser(hToken) CloseHandle hToken End Function
Betriebsystem
Die Funktion ist unter folgenden Betriebssystemen funktionsfähig:
- Windows 2000
- Windows XP
- Windows Vista
Verwandte Funktionen
ImpersonateLoggedOnUser - Prozess unter anderem Konto weiterführen
RevertToSelf - zum ursprünglichen Konto zurückkehren