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, _
ByRef 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
Hinweise
Um diese Funktion erforlgreich ausführen zu können, muss das Privileg SE_TCB_NAME (Als Teil des Betriebssystems handeln) in dem Prozesstoken aktiviert sein.
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