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 Else 'Error! 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
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