Microsoft & .NETVisual BasicVerify the Windows Password

Verify the Windows Password content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

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

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories