【问题标题】:How to find parent ZIP file from arguments when double-clicking in Windows Explorer - .NET 4.0在 Windows 资源管理器中双击时如何从参数中查找父 ZIP 文件 - .NET 4.0
【发布时间】:2011-07-15 01:04:53
【问题描述】:

Windows Explorer 中,当您打开 ZIP 文件并双击文件(例如 JPEG 文件 (.jpg))时,Windows 会将 JPEG 文件提取到临时文件夹,并将临时文件名传递给相关程序作为唯一的参数,例如 "C:\Users\jprice\AppData\Local\Temp\Temp1_.zip\.jpg"

我注意到某些应用程序(例如 Windows 7 中的 Windows 照片查看器)知道临时文件来自哪个 ZIP 文件。您可以单击下一个和上一个并从 ZIP 文件中获取下一个/上一个文件(正如您所做的那样,它们也被提取到临时文件中)。

我搜索并浏览了system.io.packaging,但我不知道如何获取原始 ZIP 文件的路径(文件名是临时文件路径的一部分)。 它不是用 shell-->open 命令完成的,据我所知,Windows 照片查看器只能获取临时文件名。

照片查看器命令行是 %SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1 这没有帮助。我确实使用 ProcessMon 观看了 Photo Viewer 并看到它读取了 .zip 文件(可能使用 zipfldr.dll),但无法发现它是如何知道原始 zip 文件在哪里的。

【问题讨论】:

  • 检查用于在 Process Explorer 中启动 Photo Viewer 的命令行

标签: windows vb.net visual-studio


【解决方案1】:

当我尝试它时,我注意到 WinZip 将生成的进程的当前工作目录初始化为 .zip 所在的文件夹。如果您可以从临时文件路径中提取 .zip 文件名(而旧的操作系统版本没有这样做那),然后您可以重建原始的.zip文件路径。

【讨论】:

  • 理想情况下,我想让它与默认文件资源管理器一起使用。使用默认文件资源管理器打开 zip 文件中的文件时,当前目录(通过 Directory.GetCurrentDirectory() 或 System.Environment.CurrentDirectory() )始终为 C:\windows\system32。如果我用 7Zip 打开文件,当前目录是临时目录。我没有尝试使用 winzip,但我认为您是正确的。
  • zip 应用程序(无论您决定使用什么)是启动文件的应用程序,因此它指定新进程的工作目录,具体取决于它用于打开文件的 API。
猜你喜欢
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
相关资源
最近更新 更多