netuserchangepassword (netapi32)
Last changed: -91.118.56.136

.
Summary
Provide a user account and its existing password, and this API allows you to choose a new password for the account.

C# Signature:

[DllImport("netapi32.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.StdCall,
SetLastError=true )]
static extern uint NetUserChangePassword (
[MarshalAs(UnmanagedType.LPWStr)] string domainname,
[MarshalAs(UnmanagedType.LPWStr)] string username,
[MarshalAs(UnmanagedType.LPWStr)] string oldpassword,
[MarshalAs(UnmanagedType.LPWStr)] string newpassword
);

VB Signature:

<DllImport("netapi32.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Unicode)> _
Public Shared Function NetUserChangePassword( _
     <MarshalAs(UnmanagedType.LPWStr)> ByVal Domain As String, _
     <MarshalAs(UnmanagedType.LPWStr)> ByVal User As String, _
     <MarshalAs(UnmanagedType.LPWStr)> ByVal OldPass As String, _
     <MarshalAs(UnmanagedType.LPWStr)> ByVal NewPass As String) As Integer
End Function

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

To change the password of the current user (or currently impersonated user), pass null for the first two args.

Sample Code:

VB.NET

139: Dim sPDCName, sUserName, sOldPW, sNewPW As String

140: intPassRetCode = NetUserChangePassword(sPDCName, sUserName, sOldPW, sNewPW)

141: If intPassRetCode <> 0 Then

142: 'throw error'

143: End If

Documentation