Apis's

Hola a ver si me puedes ayudar, he usado las apis de GETUSERNAME, WNETVERIFYPASSWORD Y LOGOUSER. Las 2 primeras me funcionan en me funcionan en el mileniun, y en NT y en 2000 me pone que no se encuentra en la libreria MPR.DLL.
El LOGONUSER me va en el 2000 perfecto pero en NT y mileniun me da siempre FALSO no se porque.
En los manuales pone que requiere como minimo cualquiera de ellas NT 3.1 yo tengo el 4.0.
Me haría falta usarlas en NT, si sabes alguna solucion para alguno de los 2 casos?
yo hago esto
Option Explicit
Declare Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Private Declare Function WNetVerifyPassword Lib "mpr.dll" Alias _
"WNetVerifyPasswordA" (ByVal lpszPassword As String, _
ByRef pfMatch As Long) As Long
Public Function GetWindowsLoginUserID() As String
Dim rtn As Long
Dim sBuffer As String
Dim lSize As Long
sBuffer = String$(260, Chr$(0))
lSize = Len(sBuffer)
rtn = GetUserName(sBuffer, lSize)
If rtn Then
sBuffer = Left$(sBuffer, lSize)
If InStr(sBuffer, Chr$(0)) Then
sBuffer = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
End If
GetWindowsLoginUserID = sBuffer
Else
GetWindowsLoginUserID = ""
End If
End Function
Public Function VerifyWindowsLoginUserPassword _
(ByVal Password As String) As Boolean
Dim rtn As Long, Match As Long
rtn = WNetVerifyPassword(Password, Match)
If rtn Then
VerifyWindowsLoginUserPassword = False
Else
VerifyWindowsLoginUserPassword = (Match <> 0)
End If
End Function
crea un formulario y colocá do textbox y un commandbutton:
Private Sub cmdVerify_Click()
MsgBox "la password administrada es: " _
& VerifyWindowsLoginUserPassword(txtPassword.Text)
End Sub
Private Sub Form_Load()
txtUsername = GetWindowsLoginUserID
txtUsername.Enabled = False
End Sub
' función LogonUser
'crea un formulario con uncommandbutton
Private Declare Function LogonUser _
Lib "Advapi32" Alias "LogonUserA" _
(ByVal lpszUsername As String, _
ByVal lpszDomain As Any, _
ByVal lpszPassword As String, _
ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, _
phToken As Long) As Long
'Sólo para win95,WinNt
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&
Public Function Login(ByVal xi_strUserID As String, _
ByVal xi_strPassword As String) As Boolean
Dim p_lngToken As Long
Dim p_lngRtn As Long
p_lngRtn = LogonUser(lpszUsername:=xi_strUserID, _
lpszDomain:=0&, _
lpszPassword:=xi_strPassword, _
dwLogonType:=LOGON32_LOGON_NETWORK, _
dwLogonProvider:=LOGON32_PROVIDER_DEFAULT, _
phToken:=p_lngToken)
If p_lngRtn = 0 Then
Login = False
Else
Login = True
End If
End Function
Private Sub Command1_Click()
Dim Resultado As Boolean
Resultado = Login("User", "Pwd")
MsgBox "EL RESULTADO DE LA PASSWORD ES:" & Resultado, vbInformation, "ACCESO"
End Sub
Gracias
1

1 Respuesta

18.700 pts.
No estoy seguro de lo que puede pasar, porque las funciones de API de seguridad son distintas para plataformas W9x y NT, ya del 2000 no hablamos, porque funciona como kiere...,
No se que decirte chico..., prueba a mandar el problema al Knowledge Base de Microsoft a ver si ellos te dicen que es lo que pasa, porque seguramente sea un problema en la declaración, hay veces que se declara diferente según la plataforma, y como eso no está escrito en ningún sitio...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas