Come stai estraendo esattamente i file? Stai utilizzando la riga di comando o la GUI? Stai trascinando i file o selezionandoli e usando la funzione di estrazione? Stai usando il menu contestuale con estensione shell?
Se si immette una cartella di destinazione e quindi si seleziona la funzione di estrazione o si utilizza l'estensione della shell, non si estraggono prima in una cartella temporanea, si estraggono direttamente nella destinazione.
Se selezioni i file nell'interfaccia utente e li trascini nella cartella di destinazione, verranno estratti in una cartella temporanea.
Il motivo sta nel modo in cui è selezionata la destinazione. Se si inserisce la cartella di destinazione o si utilizza la voce di menu di scelta rapida, il programma sa esattamente dove deve essere estratto. Tuttavia, se si trascina semplicemente i file, quindi a causa di come funziona la funzione di trascinamento della selezione di OLE , il programma non sa dove si trova la cartella di destinazione. In altre parole, è Explorerche riceve la cartella di destinazione, non il programma di archiviazione. Di conseguenza, il programma non può sapere dove estrarli, quindi li estrae semplicemente nella cartella temporanea, quindi Explorer li sposta una volta fatto. Puoi vederlo chiaramente estraendo un file di grandi dimensioni usando entrambi i metodi. Quando lo trascini in una cartella, viene estratto, quindi viene visualizzata la finestra di dialogo di funzionamento dei file standard di Explorer che lo sposta nella cartella. Se si specifica la cartella e si fa clic su Estrai, viene estratto e non viene eseguita alcuna ulteriore elaborazione.
Sentiti libero di consultare il codice sorgente di 7-Zip per vedere come viene gestita la posizione di estrazione.
L'ho imparato nel modo più duro diversi anni fa quando volevo implementare il trascinamento della selezione in un programma che stavo scrivendo.