A distanza di settimane torno sul problema: nel modo che ho scritto non sempre funzionava, a volte si accedeva anche con passwords sbagliate, ho risolto utilizzando il protocollo LDAP anzichè il WinNT, questo è il codice:
codice:
'Spuntare la reference a: Active DS Type Library
'Specificare il dominio a cui appartiene l'utenza (se è in locale solitamente è il nome del computer)
Private Function AuthWinUser2(ByVal pDomain As String, ByVal pUser As String, ByVal pPassword As String, ByRef outError As String) As Boolean
On Error GoTo Err_AuthWinUser2
Dim dso As IADsOpenDSObject
Dim domain As IADs
'Resume Next
'Creo il container
Const ADS_SECURE_AUTHENTICATION = 1
Set dso = GetObject("LDAP:")
Set domain = dso.OpenDSObject("LDAP://" & pDomain, pUser, pPassword, ADS_SECURE_AUTHENTICATION)
AuthWinUser2 = True
Fine_AuthWinUser2:
Set dso = Nothing
Set domain = Nothing
If Err.Number > 0 Then
outError = Err.Description
End If
Exit Function
Err_AuthWinUser2:
Select Case Err.Number
Case -2147023570
MsgBox "Utenza sconosciuta o password di dominio non corretta", vbExclamation, "Login fallito"
GoTo Fine_AuthWinUser2
Case -2147467259
MsgBox "Dominio sconosciuto!" & vbCrLf & vbCrLf & " Descrizione tecnica: " & Err.Number & " " & Err.Description, vbExclamation, "Login fallito"
GoTo Fine_AuthWinUser2
Case Is < 0
MsgBox "ATTENZIONE - Non siete stati riconosciuti" & vbCrLf & vbCrLf & " Descrizione tecnica: " & Err.Number & " " & Err.Description, vbExclamation, " Attenzione! "
GoTo Fine_AuthWinUser2
Case Else
MsgBox "Function AuthWinUser2 - Errore N°: " & Err.Number & " - Descrizione: " & Err.Description, vbExclamation, " Attenzione! "
GoTo Fine_AuthWinUser2
End Select
Resume
End Function
PERO! Porca pupazza funziona solo su windows 2000! Su Windows NT no!
Ho letto dal sito microsoft che in NT mancava l'adsi percui l'ho scaricato ed installato ma non cambia nulla, ho controllato i servizi di NT ma non capisco se ne manca qualcuno indispensabile... non so più cos'altro provare
edit: l'oggetto domain è un IADS non un IADSdomain, così infatti da un type mismatch, stavo facendo delle prove.