Como exatamente você está extraindo os arquivos? Você está usando a linha de comando ou a GUI? Você está arrastando os arquivos ou selecionando-os e usando a função de extração? Você está usando o menu de contexto da extensão da shell?
Se você inserir uma pasta de destino e, em seguida, selecionar a função de extração ou usar a extensão do shell, eles não serão extraídos para uma pasta temporária primeiro, eles serão extraídos diretamente para o destino.
Se você selecionar os arquivos na IU e arrastar para a pasta de destino, então será extraído para uma pasta temporária.
O motivo está em como o destino é selecionado. Se você inserir a pasta de destino ou usar o item do menu de contexto, o programa saberá exatamente para onde precisa extrair. No entanto, se você simplesmente arrastar os arquivos, então, devido a como funciona a função arrastar e soltar de OLE , o programa não sabe onde está a pasta de destino. Em outras palavras, é o Explorer que recebe a pasta de destino, não o programa de arquivamento. Como resultado, o programa não pode saber onde extraí-los e, assim, simplesmente os extrai para a pasta temp e, em seguida, o Explorer os move assim que é feito. Você pode ver isso claramente extraindo um arquivo grande usando ambos os métodos. Quando você o arrasta para uma pasta, ele é extraído e, em seguida, você vê a caixa de diálogo de operação de arquivo padrão do Explorer movendo-a para a pasta. Se você especificar a pasta e clicar em Extrair, ela será extraída e nenhum processamento adicional será feito.
Sinta-se à vontade para examinar o código-fonte do 7-Zip para ver como a extração a localização é tratada.
Eu aprendi isso da maneira mais difícil, há vários anos, quando quis implementar drag-and-drop em um programa que estava escrevendo.