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