Как найти родительский ZIP-файл из аргументов при двойном щелчке в Windows Explorer - .NET 4.0 - PullRequest
3 голосов
/ 14 июля 2011

В 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.

1 Ответ

1 голос
/ 14 июля 2011

Когда я пытаюсь это сделать, я замечаю, что WinZip инициализирует текущий рабочий каталог порожденного процесса в папку, в которой находится .zip. Если вы можете извлечь имя файла .zip из пути к временному файлу (а старые версии ОС этого не делали)что), то вы можете восстановить исходный путь к ZIP-файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...