Página 1 de 1
Senha do hb_ZipFile()
Enviado: 30 Mar 2022 18:48
por Linguagemclipper
Olá pessoal!
Coloquei uma senha usando hb_ZipFile()
HB_ZIPFILE(cBAKFILE, aBACKUP, nLEVEL, bZIP, lOVERWRITE, cSEN1)
Acontece que na hora de descompactar, ele descompacta acertando ou não a senha. Entretanto, se errar a senha os arquivos extraídos não abrem, se acertar abre.
A senha fica dentro de cada arquivo ao invés do zip. Eu queria que nem abrisse o zip sem a senha.
HB_UNZIPFILE(cBACKUP, bUNZIP, ,cSEN1 ,".\", aEXTRACT )
Tem alguma forma ou outra função que a senha fique no zip? Não quero que abra o zip sem a senha.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 14:00
por Kapiaba
Boa tarde, dê uma olhada no fonte: PROC996.PRG e veja se clareia suas ideias:
https://mega.nz/file/II9GTBLZ#h4aAe8VgD ... 3ekImYvOFg
Dúvidas, pergunte, porfa.
Regards, saludos.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 14:04
por Kapiaba
imagem:
Regards, saludos.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 14:43
por vailton
Lindona demais esta tela, hein Kapi?
Xonei nela, parabéns pelo visual do projeto.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 15:03
por Kapiaba
Lindona demais esta tela, hein Kapi?
Xonei nela, parabéns pelo visual do projeto.
Vailton Renato
Obrigado meu amado mestre. Fontes inclusos e free, pode usar sem moderação.
Forte abraço.
Regards, saludos.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 15:20
por JoséQuintas
Que eu saiba o ZIP sempre deixa listar o conteúdo, com ou sem senha.
A senha se refere a descompactar cada arquivo.
Inclusive, como já percebeu, cada arquivo dentro do ZIP pode ter uma senha diferente.
Talvez, quem sabe, a opção seria ter um zip dentro de outro zip. e desta forma só veria o nome do zip interno sem o conteúdo dele.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 16:06
por Linguagemclipper
JoséQuintas escreveu:Que eu saiba o ZIP sempre deixa listar o conteúdo, com ou sem senha.
A senha se refere a descompactar cada arquivo.
Inclusive, como já percebeu, cada arquivo dentro do ZIP pode ter uma senha diferente.
Talvez, quem sabe, a opção seria ter um zip dentro de outro zip. e desta forma só veria o nome do zip interno sem o conteúdo dele.
Listar é uma coisa, mas ele descompacta tudo acertando a senha ou não.
Se errar a senha cada arquivo já descompactado vai pedir senha para ser aberto/executado... mas, pede!
Se acertar a senha ele não pede senha.
O que ocorreu? Os DBFs foram descompactados com senha errada, mostra a barra de progresso de descompactuação e tudo mais, se eu der 2 cliques neles pede senha, o hb_unzip diz que falhou a descompactação, enquanto que, se eu acerto a senha, o hb_unzip diz que descompactou com sucesso e se der 2 cliques neles abre uma janela para eu escolher o programa que abre o DBF.
Para mim, se errasse a senha deveria parar por aí, nem descompactaria.
Como é que funciona afinal?
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 16:37
por JoséQuintas
zip -a arquivo1.dbf
zip -a arquivo1.dbf -senha abcd
zip -a arquivo1.dbf -senha 123
Será que isso cria o mesmo arquivo 3 vezes um com cada senha?
De repente é uma coisa assim que está fazendo, e por isso funciona com ou sem senha, mas não funciona com senha errada, porque nenhum arquivo atende a senha errada.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 16:40
por JoséQuintas
Adicional:
Nunca testei descompactar pelo hb_unzip, só uso o Windows mesmo.
Se hb_unzip descompactar sem senha, significa que ele quebra qualquer zip, o que acho difícil, por isso minha suspeita.
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 16:42
por JoséQuintas
Senha do hb_ZipFile()
Enviado: 31 Mar 2022 16:52
por JoséQuintas
Linguagemclipper escreveu:O que ocorreu? Os DBFs foram descompactados com senha errada, mostra a barra de progresso de descompactuação e tudo mais, se eu der 2 cliques neles pede senha, o hb_unzip diz que falhou a descompactação, enquanto que, se eu acerto a senha, o hb_unzip diz que descompactou com sucesso e se der 2 cliques neles abre uma janela para eu escolher o programa que abre o DBF.
Para mim, se errasse a senha deveria parar por aí, nem descompactaria.
Como é que funciona afinal?
?
Além do mais, com certeza barra de progresso não faz parte do hb_unzip, mas sim de uma rotina do programador.
Tudo indica que foi o programador.
Senha do hb_ZipFile()
Enviado: 01 Abr 2022 23:25
por Linguagemclipper
Resolví criando uma pasta temporária. Se o Hb_unzip der sucesso eu copio para a pasta do sistema e apago a pasta, se der falha eu só apago a pasta temporária.
Senha do hb_ZipFile()
Enviado: 02 Abr 2022 10:18
por carlos_dornelas
Eu utilizo há vários anos assim e nunca tive problemas... porém nao utilizo a barra de progresso...
if hb_zipfile( vNome_zip,aARQ, 9, ,.t.,xsnh,.F.,.F., )
if hb_unzipfile(arq,,.f.,xsnh, , )
xharbour 0.99
[]s
Antonio Carlos
Senha do hb_ZipFile()
Enviado: 05 Abr 2022 11:59
por Linguagemclipper
JoséQuintas escreveu:Linguagemclipper escreveu:O que ocorreu? Os DBFs foram descompactados com senha errada, mostra a barra de progresso de descompactuação e tudo mais, se eu der 2 cliques neles pede senha, o hb_unzip diz que falhou a descompactação, enquanto que, se eu acerto a senha, o hb_unzip diz que descompactou com sucesso e se der 2 cliques neles abre uma janela para eu escolher o programa que abre o DBF.
Para mim, se errasse a senha deveria parar por aí, nem descompactaria.
Como é que funciona afinal?
?
Além do mais, com certeza barra de progresso não faz parte do hb_unzip, mas sim de uma rotina do programador.
Tudo indica que foi o programador.
Quintas e Carlos, a barra de progresso é o 2º parâmetro do HB_UNZIPFILE() e é normalmente um codeblock.
PEDAÇO DO MEU CÓDIGO COMO DEIXEI:
Código: Selecionar todos
// EXTRAI ARQUIVOS DO BACKUP COMPACTADO
DBCLOSEALL() // FECHA TODOS OS BANCOS DE DADOS PORVENTURA ABERTOS
aEXTRACT := hb_GetFilesInZip( cBACKUP )
nTOTAL := LEN(aEXTRACT)
bUNZIP := {|cFILE, nPos| PRESBAR(cFILE, nPOS, nTOTAL)} // BARRA DE PROGRESSO: nome do arquivo, número de ordem atual, total de arquivos.
// CRIA SUBPASTA TEMP
cDIRTMP := CURDRIVE()+":\"+CURDIR()+"\"+DTOS(DATE())+"\"
cCURDIR := CURDRIVE()+":\"+CURDIR()+"\"
IF ISDIR(cDIRTMP)
// SE JÁ EXISTIR O TEMP, APAGA TUDO.
aFILES := DIRECTORY(cDIRTMP+"*.*")
AEval( aFiles, { |aFile| FILEDELETE( cDIRTMP+aFile[1] ) } )
ELSE
// CRIA O TEMP
nERRO := MAKEDIR( cDIRTMP )
ENDIF
lUNZIP := HB_UNZIPFILE(cBACKUP, bUNZIP, ,cSEN1 ,cDIRTMP, aEXTRACT )
IF lUNZIP
// ARQUIVOS FORAM EXTRAÍDOS E ESTÃO DESBLOQUEADOS SEM SENHA
MSGRODA("SUCESSO! Copiando os arquivos para a pasta do sistema...", "W+/BG")
// COPIA OS ARQUIVOS DESCRIPTOGRAFADOS PARA A PASTA ATUAL
// SE ARQUIVO EXISTIR, SOBRESCREVE SEM AVISO
AEval( aFiles, { |aFile| FILECOPY( cDIRTMP+aFile[1], cCURDIR+aFILE[1] ) } )
ALERT("RESTAURAÇÃO DO BACKUP REALIZADO COM SUCESSO!")
ELSE
ALERT("FALHA NA RESTAURAÇÃO DO BACKUP. ERROU A SENHA?")
// PORÉM OS ARQUIVOS FORAM DESCOMPACTADOS NA PASTA TEMP E ESTÃO BLOQUEADOS COM A SENHA
ENDIF
// APAGA A SUBPASTA TEMP
IF ISDIR(cDIRTMP)
AEval( aFiles, { |aFile| FILEDELETE( cDIRTMP+aFile[1] ) } )
nERRO := DirRemove( cDIRTMP ) // APAGA DIRETÓRIO TEMPORÁRIO
ENDIF
Morreu o galo... rs