VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Change a User's Password (w/o Active Directory)

by Piyush Gupta (3 Submissions)
Category: Windows System Services
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Mon 15th October 2001
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Change a User's Password (w/o Active Directory)

API Declarations



Private Declare Function NetUserChangePassword _
Lib "Netapi32.dll" (ComputerName As Any, User As Any, _
OldPass As Any, NewPass As Any) As Long

Private Const ERROR_ACCESS_DENIED = 5&
Private Const ERROR_INVALID_PASSWORD = 86&
Private Const NERR_InvalidComputer = 2351
Private Const NERR_NotPrimary = 2226
Private Const NERR_UserNotFound = 2221
Private Const NERR_PasswordTooShort = 2245
Private Const ERROR_CANT_ACCESS_DOMAIN_INFO = 1351


Rate Change a User's Password (w/o Active Directory)



'computer "Server" from "OldPassword" to "NewPassword"
Function ChangeUserPassword(ByVal Server As String, _
  ByVal User As String, ByVal OldPassword As String, _
  ByVal NewPassword As String) As String

    Dim r As Long, msg As String

    'Create Unicode-Arrays
Dim bComputer() As Byte:    bComputer = GetByteArray(Server)
Dim bUser() As Byte:        bUser = GetByteArray(User)
Dim bOldPassword() As Byte: bOldPassword = GetByteArray(OldPassword)
Dim bNewPassword() As Byte: bNewPassword = GetByteArray(NewPassword)
    
    'call API-Function
    r = NetUserChangePassword(bComputer(0), bUser(0), _
      bOldPassword(0), bNewPassword(0))
    
    'check return value and represent as string
    Select Case r 
        Case ERROR_ACCESS_DENIED:    msg = "Error: Access denied."
        Case ERROR_INVALID_PASSWORD: msg = "Error: Invalid password."
        Case NERR_InvalidComputer:   msg = "Fehler: Invalid Computer-/Domainname."
        Case NERR_NotPrimary:        msg = "Error: This operation can only performed on the primary domain controler."
        Case NERR_UserNotFound:      msg = "Error: User not found."
        Case NERR_PasswordTooShort:  msg = "Error: Password does not match Password-Restrictions. (Password to short, to long or has already been used by this user.)"
        Case ERROR_CANT_ACCESS_DOMAIN_INFO
                                     msg = "Error: Error accessing info for domain controler. Maybe the computer is not available or access was denied."
        Case 0:                      msg = "Operation performed successfully."
        Case Else:                   msg = "Error: Unexpected Error " & r & " occured."
    End Select
    
    ChangeUserPassword = msg
End Function

'Converts a Unicode-String to a Unicode-Byte-Array.
'Is used because VB always passes Strings as ANSI instead of Unicode.
Private Function GetByteArray(ByVal str As String) As Byte()
    Dim Buf() As Byte
    Buf = str
    ReDim Preserve Buf(Len(str) * 2 + 1)

    GetByteArray = Buf
End Function


Download this snippet    Add to My Saved Code

Change a User's Password (w/o Active Directory) Comments

No comments have been posted about Change a User's Password (w/o Active Directory). Why not be the first to post a comment about Change a User's Password (w/o Active Directory).

Post your comment

Subject:
Message:
0/1000 characters