purebasic.variopinto.net

NetUserGetInfo NetUserSetInfo

;////////////////////////////////////////////////////////// ; jpd September 2009 ; update October 2010 ; ; PB 4.51 ; ; enable/disable user local or on remote computer ;////////////////////////////////////////////////////////// EnableExplicit #ERROR_SUCCESS = 0 #NERR_SUCCESS=#ERROR_SUCCESS #UF_ACCOUNTDISABLE = 2 #ERR_ACCOUNT_CHANGED = 0 #ERR_ACCOUNT_ALREADY_DISABLED = -16 #ERR_ACCOUNT_ALREADY_ENABLED = -32 #ERR_ACCOUNT_NOT_FOUND = -64 #ERR_UPDATE_NOT_SUCCESSFUL = -128 Procedure.l ToggleAccount(sComputer.s,sUsername.s) Protected Ucomputer.s,Uuser.s Protected success.l, buff.l=0 Protected *ui3.USER_INFO_3 Protected DisableAccount.l sComputer=RemoveString(sComputer, "\" ) sComputer="\\"+sComputer CompilerIf #PB_Compiler_Unicode Ucomputer = sComputer Uuser = sUsername CompilerElse Ucomputer = Space(512) Uuser = Space(512) MultiByteToWideChar_(#CP_ACP, #MB_PRECOMPOSED, @sComputer, -1, @Ucomputer, 512) MultiByteToWideChar_(#CP_ACP, #MB_PRECOMPOSED, @sUsername, -1, @Uuser, 512) CompilerEndIf success = NetUserGetInfo_(Ucomputer, @Uuser, 3, @buff) If success = #NERR_SUCCESS *ui3=buff If *ui3\Flags & #UF_ACCOUNTDISABLE <>#UF_ACCOUNTDISABLE Debug "enabled" ;set disable value *ui3\Flags = #UF_ACCOUNTDISABLE Else Debug "disabled" ;set enable value *ui3\Flags = *ui3\Flags - #UF_ACCOUNTDISABLE EndIf buff=*ui3 success = NetUserSetInfo_(Ucomputer, @Uuser,3,buff,0) NetApiBufferFree_(buff) If success = #ERROR_SUCCESS DisableAccount = #ERR_ACCOUNT_CHANGED ProcedureReturn 1 Else DisableAccount = #ERR_UPDATE_NOT_SUCCESSFUL ProcedureReturn GetLastError_() EndIf Else ProcedureReturn GetLastError_() EndIf EndProcedure Debug ToggleAccount("computername","username") ;return code ;1 enable/disable successfully ;else error: GetLastError