-
I have been getting mixed messages about the windows network functions in advapi32.dll. Does [br]anyone know if LogonUserA works on Windows 95/98/ME? It always returns false for me. It returns [br]true, however, on Windows NT 4 and Windows 2000. Here is the code I use:
Code:
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 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, ByRef phToken As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetUserName1 Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Const LOGON32_PROVIDER_DEFAULT As Long = 0&
Private Const LOGON32_PROVIDER_WINNT35 As Long = 1&
Private Const LOGON32_LOGON_INTERACTIVE As Long = 2&
Private Const LOGON32_LOGON_NETWORK As Long = 3&
Private Const LOGON32_LOGON_BATCH As Long = 4&
Private Const LOGON32_LOGON_SERVICE As Long = 5&
Private mlngHToken As Long
Public Function Logon(ByVal pstrUserName As String, _
ByVal pstrPassword As String, _
ByVal pstrDomain As String) As Boolean
Dim lngTokenHandle As Long
Dim lngLogonType As Long
Dim lngLogonProvider As Long
Dim lngResult As Long 'As Boolean
Dim lngError As Long
lngLogonType = LOGON32_LOGON_NETWORK
lngLogonProvider = LOGON32_PROVIDER_DEFAULT
On Error GoTo ErrorHandler
lngResult = LogonUser(pstrUserName, pstrDomain, pstrPassword, _
lngLogonType, lngLogonProvider, mlngHToken)
If lngResult = 0 Then
lngError = GetLastError()
End If
Logoff
Logon = CBool(lngResult)
Exit Function
ErrorHandler:
MsgBox Err.Number & ":" & Err.Description & " line:" & Erl
End Function
Public Sub Logoff()
CloseHandle mlngHToken
End Sub
-
it's NT only according to MSDN