Private Enum TOKEN_TYPE
TokenPrimary = 1
TokenImpersonation
End Enum
Private Enum SECURITY_IMPERSONATION_LEVEL
SecurityAnonymous = 0
SecurityIdentification
SecurityImpersonation
SecurityDelegation
End Enum
Private Declare Function LogonUser Lib "advapi32.dll" Alias _
"LogonUserA" _
(ByVal lpszUsername As String, _
ByVal lpszDomain As String, _
ByVal lpszPassword As String, _
ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, _
phToken As Long) As Long
Private Declare Function DuplicateTokenEx _
Lib "advapi32.dll" (ByVal hExistingToken As Long, _
ByVal dwDesiredAccess As Long, _
ByVal lpTokenAttributes As Long, _
ImpersonationLevel As SECURITY_IMPERSONATION_LEVEL, _
ByVal TokenType As TOKEN_TYPE, _
phNewToken As Long) As Boolean
Private Sub Command1_Click()
Dim Result As Long
Dim htoken As Long
Dim hNewToken As Long, i As Long
Result = LogonUser("Administrator", "", "111", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, htoken)
MsgBox htoken
MsgBox DuplicateTokenEx(htoken, 0, i, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TOKEN_TYPE.TokenPrimary, hNewToken)
MsgBox hNewToken
End Sub