简单点,刨去所有不需要的部分,注意command的使用
string fppath = System.Configuration.ConfigurationManager.AppSettings["Flashpaper"];
string outpath = filepath + ".swf";
//string param = fppath + " " + filepath + " -o " + outpath;
StringBuilder command = new StringBuilder();
//已使用环境变量
command.Append("/"").Append(fppath).Append("/" ")
.Append(uploadRootPath).Append(filepath)
.Append(" -o ")
.Append(uploadRootPath).Append(outpath);
Process p = new Process();
p.StartInfo.FileName = command.ToString();
p.StartInfo.FileName = "cmd";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = false;
//p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
try
{
p.Start();
string strOutput = null;
p.StandardInput.WriteLine(command);
p.StandardInput.WriteLine("exit");
strOutput = p.StandardOutput.ReadToEnd();
//Console.WriteLine(strOutput);
p.WaitForExit();
p.Close();
}
catch (Exception ex)
{
--throw ex;
}
然后,我的电脑--右键--管理--本地用户和组---》把networkservice一脚踹进administrators组,重启iis服务(注意了,是iis服务),试图产生swf,成功。
还没搞定的M我
ps:vs里面debug的时候启动flashpaper进程的是administrator(我用的是管理员),部署到iis里是networkservice。观察一下两者启动的进程的对比,前者会启动两个flashpaper进程,后者只启动一个,然后就没了,猜想有可能是networkservice权限不够,丢到管理员组重启iis服务解决这个问题
貌似提升了networkservice权限可能会引起某些隐患。。。。
寻求完美解决方案。。。
经测试,对flashpaper安装目录、系统部署到iis的虚拟目录增加完全控制权限均不能解决问题
在winxp底下还要拉上aspnet用户,要不也会死火
flashpaper依赖于office,所以安装office2007以上版本会比较好,因为office2003无法解析docx
----6月25日更新----
networkservice没有直接打印权限,是导致这个问题的原因
flashpaper的工作原理是调用office接口使用虚拟打印机生成swf文档,networkservice调用office是没问题的,但是它不能打印
又进入脑残的授权研究。。。