> loUser = GETOBJECT("WinNT://" + tDomain + "/" + ALLTRIM(tuser) + ",user") > try > loUser.ChangePassword (tpassword,tpassword) > catch > llPasswordVerified = .F. > endtry > > RetURN llPasswordVerified >>
#define LOGON32_PROVIDER_DEFAULT 0 #define LOGON32_LOGON_NETWORK 3 lparameters tcDomain, tcUser, tcPassword local lnToken, llResult, lcUser, lcDomain, lcPassword lcDomain = Iif(Vartype(tcDomain) # 'C' or Empty(tcDomain), Getenv('UserDomain'), Alltrim(tcDomain)) lcUser = Iif(Vartype(tcUser) # 'C' or Empty(tcUser), Getenv('UserName'), Alltrim(tcUser)) lcPassword = Iif(Vartype(tcPassword) # 'C', '', tcPassword) declare LogonUser in AdvAPI32 ; String Username, ; String Domain, ; String Password, ; Integer LogonType, ; Integer LogonProvider, ; Long @ Token ; declare CloseHandle in Kernel32 ; integer hObject declare SetLastError in win32api ; integer ErrCode declare integer GetLastError in WIN32API SetLastError(0) lnToken = 0 llResult = LogonUser(lcUser, lcDomain, lcPassword, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, @lnToken) if llResult and lnToken # 0 CloseHandle(lnToken) llResult = .T. else llResult = .F. * Do something with GetLastError() endif return llResult