Verify the Windows Password

by Sam Huggill

Verify the Windows password.

The code in this HowTo was originally written by Geoff Glaze. This HowTo uses a tip from before (Get the current user name) and then uses the WNetVerifyPassword API call to check the password that the user enters. This is any easy way to get tough security in your program without spending lots of money or development time.

Add a new bas module (modVerifyPassword) and copy the following code into it:

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)

  'Reformat string
  If InStr(sBuffer, Chr$(0)) Then
    sBuffer = left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
  End If

  GetWindowsLoginUserID = sBuffer
  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
  VerifyWindowsLoginUserPassword = (Match <> 0)
End If
End Function

Add a new form to the project and add two text boxes (txtUsername & txtPassword) and a command button (cmdVerify). Copy the following code into the form:

Private Sub cmdVerify_Click()
MsgBox "The password you supplied was _
  " & VerifyWindowsLoginUserPassword(txtPassword.Text)
End Sub

Private Sub Form_Load()
txtUsername = GetWindowsLoginUserID
txtUsername.Enabled = False
End Sub
This article was originally published on Wednesday Nov 20th 2002
Mobile Site | Full Site