我用ASP.net写了一个压缩文件的代码,在XP下可以压缩成功,但在windows2003下VS默认服务下可以压缩成功,但放在IIS下就报错了,IIS下的权限是administr最高权限了
System.ComponentModel.Win32Exception: 系统找不到指定的文件。 在 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 在 System.Diagnostics.Process.Start() 在 manage_Default3.Button1_Click(Object sender, EventArgs e) 位置 e:\dress.com\manage\Default3.aspx.cs:行号 45
压缩代码:
String the_rar;
RegistryKey the_Reg;
Object the_Obj;
String the_Info;
ProcessStartInfo the_StartInfo;
Process the_Process;
try
{
the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
the_Obj = the_Reg.GetValue("");
the_rar = the_Obj.ToString();
the_Reg.Close();
the_rar = the_rar.Substring(1, the_rar.Length - 7);
the_Info = " a " + @"e:\jquery\1.rar " + " " + @"F:\网站资料\01.jpg " + @"F:\网站资料\02.jpg";
the_StartInfo = new ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
the_StartInfo.WorkingDirectory = @"e:\jquery\1";//获取或设置要启动的进程的初始目录。
the_Process = new Process();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
Response.Write("压缩成功");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
string strRarFileName = strNow + ".rar";
string strTarget = strDirPath + "\\" + strRarFileName;
string strShellCommand = String.Concat("a -p", DateTime.Now.Day + strPassword + "qpcard", " ", strTarget, " ", strFileName);
System.Environment.CurrentDirectory = strDirPath;
System.Diagnostics.Process proRar = new System.Diagnostics.Process();
proRar.StartInfo.FileName =Path.Combine(strDirPath,strRarFileExe) ;
proRar.StartInfo.Arguments = strShellCommand;
proRar.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
try
{
proRar.Start();
}
catch (Exception)
{
return "";
}
这个是通过调用Winrar来压缩文件的。
你这个应该是找不到压缩程序的路径,试试把程序分别放在网站或虚拟目录里。
或者输出路径再看下吧