
Para você que é ADMIN e, numa emergência, precise de uma rotina para pegar as senhas dos seus usuários do Protheus 8, segue uma rotina que faz isso e grava tudo num arquivo texto, sem criptografia.
A rotina lê o arquivo SIGAPASS.SPF e grava o arquivo DADOSU.TXT na pasta TEMP (que deve ser criada dentro da pasta do Protheus). O arquivo contém o nome reduzido, senha e mais alguns dados. Use com responsabilidade:
user function PegaSenhas()
local aPswDet := "",;
cArquivo, cPswFile := "sigapss.spf", cRBSFConct := cPswId := cPswName := cPswPwd := cPswDet := cUserId := "",;
lEncrypt := .f.,;
nArquivo, nPswRec := 0, nRBSFrec := SPF_RecCount(cPswFile, 1)
psworder(1)
for nId := 1 to nRBSFrec
cUserId := strzero(nId,6)
nPswRec := spf_seek(cPswFile,"1U"+cUserId, 1)
if nPswRec > 0
spf_getfields(cPswFile, nPswRec, @cPswId, @cPswName, @cPswPwd, @cPswDet)
aPswDet := str2array(cPswDet, lEncrypt)
aPswDet[1][3] := PswEncript(aPswDet[1][3],1)
cRBSFConct += aPswDet[1][2] +""+ aPswDet[1][3] +""+ aPswDet[1][4] +""+ aPswDet[1][13] + chr(13) + chr(10)
endif
next
cArquivo := cFilant + "DADOSU.TXT"
nArquivo := fcreate("\TEMP\" + cArquivo, 0)
if ferror() # 0
msgalert ("ERRO AO CRIAR O ARQUIVO, ERRO: " + str(ferror()))
else
fwrite(nArquivo, cRBSFConct)
if ferror() # 0
msgalert ("ERRO AO GRAVAR NO ARQUIVO, ERRO: " + str(ferror()))
endif
endif
fclose(nArquivo)
return nil
Bom dia, estou com problema nesta linha
ResponderExcluirspf_getfields(cPswFile, nPswRec, @cPswId, @cPswName, @cPswPwd, @cPswDet)
ele não reconhece, tem algum include para funcionar??
obrigado
João Zabotto
jzabotto.analista@gmail.com
Boa tarde.
ResponderExcluirao executar esta função: nPswRec := spf_seek(cPswFile,"1U"+cUserId, 1)
o retorno é sempre -1.
Somente com o usuario 000000 (administrador) é que o retorno é igual a 1.
Tem alguma dica?
tt.
alexandre
Qual a sua versão do Protheus? Adianto que na versão 10 em diante algumas funções destas foram alteradas ou descontinuadas pela TOTVS.
ResponderExcluir