'Class.Impersonate: Option Public Option Declare Declare Private 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 Declare Private Function ImpersonateLoggedOnUser Lib "advapi32.dll" Alias "ImpersonateLoggedOnUser" ( Byval hToken As Long ) As Long Declare Private Function RevertToSelf Lib "advapi32.dll" Alias "RevertToSelf" () As Long Declare Private Function CloseHandle Lib "kernel32.dll" Alias "CloseHandle" ( Byval hObject As Long ) As Long Private Const LOGON32_LOGON_NEW_CREDENTIALS& = 9 Private Const LOGON32_PROVIDER_WINNT50& = 3 Class WinImpersonate Private hToken As Long Sub new( Username As String, domain As String, password As String) Dim retval As Integer retval =LogonUser(UserName, Domain, Password, LOGON32_LOGON_NEW_CREDENTIALS&, LOGON32_PROVIDER_WINNT50&, hToken)
If RetVal <> 0 Then RetVal = ImpersonateLoggedOnUser( hToken ) If RetVal = 0 Then If hToken <> 0 Then CloseHandle( hToken ) End If End If Else ' retval = GetLastError()
End If End Sub Sub delete If hToken <> 0 Then CloseHandle( hToken ) Call RevertToSelf() End If End Sub End Class
BlogSphere
Join The WebLog Revolution at BlogSphere.net