В Windows Explorer , когда вы открываете ZIP-файл и дважды щелкаете файл, например, JPEG-файл (.jpg), Windows извлекает JPEG-файл во временную папку и передает временный файл имя связанной программы в качестве единственного аргумента, например «C: \ Users \ jprice \ AppData \ Local \ Temp \ Temp1 _ <>. zip \ <>. jpg»
Я заметил, что некоторые приложения, такие как Windows Photo Viewer в Windows 7, знают, из какого ZIP-файла пришел временный файл. Вы можете щелкнуть по следующему и предыдущему и получить следующие / предыдущие файлы из ZIP-файла (как и вы, они также извлекаются во временные файлы).
Я прогуглил и пролистал system.io.packaging
, но не могу понять, как получить путь к исходному ZIP-файлу (имя файла является частью пути временного файла).
Это не делается с помощью команды shell -> open, Windows Photo Viewer получает только временное имя файла, насколько я могу судить.
Командная строка Photo Viewer
% SystemRoot% \ System32 \ rundll32.exe "% ProgramFiles% \ Windows Photo Viewer \ PhotoViewer.dll", ImageView_Fullscreen% 1
Что не помогает Я использовал ProcessMon для просмотра Photo Viewer и увидел, что он читает файл .zip (вероятно, с использованием zipfldr.dll), но не смог выяснить, откуда он узнал, где находится исходный файл zip.