1

我实际上是在尝试启动一个 winzip 进程并压缩一个文件夹。这是我在 vb 中使用下面的代码。

Dim startInfo As New System.Diagnostics.ProcessStartInfo
Dim pStart As New System.Diagnostics.Process
Dim tempFileName As String
Try
    startInfo = New System.Diagnostics.ProcessStartInfo( _
    "c:\Program Files\WinZip\WINZIP32.EXE")
    startInfo.Arguments = " -a -r ""c:\test.zip"" c:\test"
    startInfo.UseShellExecute = False
    startInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Normal

    pStart.StartInfo = startInfo
    'startInfo.WorkingDirectory = "c:\Program Files\WinZip"
    'startInfo.FileName = "WINZIP32.EXE"
    pStart.Start()
    pStart.WaitForExit()
    
Catch ex As Exception
    Throw
End Try

当它放入 Windows 应用程序的按钮单击事件中时,它工作正常。但是,当在 Web 应用程序的按钮单击事件中执行相同操作时,我可以看到该过程已在机器的任务管理器中启动。但它不会压缩,也不会关闭应用程序,也不会弹出其 winzip ui.... 但在极少数机器上,这确实可以正常工作。在大多数机器中,我都面临着这个问题,并且能够始终如一地重现这个问题......

但是如果我尝试使用 7z zip 做类似的事情,它确实可以从 Web 应用程序本身正常工作......

这个过程有解决方法吗?

4

2 回答 2

2

我相信 .Net 框架已经内置了 zip 功能。我会先尝试使用这些。由于 Web 服务器上的权限,您的 zip 程序可能没有运行。

编辑

我刚刚检查了一下,System.IO.Compression 中的 zip 支持似乎有限。但根据这个讨论,它可能不是你需要的。然而,该讨论提到了一篇名为“使用 Windows Shell API 和 C# 解压缩 Zip 文件”的文章。

于 2008-12-12T22:02:35.530 回答
1

这可能与运行 IIS 的用户有关;尝试将应用程序池更改为以您的身份运行,看看它是否有效。当然,winzip 是一个 UI 工具——使用命令行 zip 实用程序可能会做得更好... pkzip ;-p

就个人而言,我会考虑改用#ZipLib - 这将允许您在托管代码中操作 zip 文件。

于 2008-12-12T13:52:37.173 回答