首页 新闻 会员 周边

IIS7.0中Process打开cmd程序出现问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-01-10 13:49

本人在VS中用Process打开cmd程序,并传入参数,转换图片,运行成功!

但是放入IIS7.0中,Process打不开cmd程序,程序直接运行过去,无结果,无报错!

开始以为IIS权限不够,便设置了IIS权限,给予管理员权限还是不行,跟踪监视看到Process在start的时候,进程被终止,上网查询无果,望各位大侠指点!

 string img = Server.MapPath(@"imageTest\" + "sss.pdf[0]");

            string newImg = Server.MapPath(@"image\" + "test.png");

            if (File.Exists(newImg))
            {
                File.Delete(newImg);
            }
            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.CreateNoWindow = true;
            startInfo.UseShellExecute = false;
            startInfo.RedirectStandardInput = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.RedirectStandardError = true;
            startInfo.FileName = @"cmd.exe";
            startInfo.WindowStyle = ProcessWindowStyle.Maximized;
            string strCmd = "/c " + @"convert -quality 100 -antialias -density 96 -transparent white -trim {0} {1} ";
            startInfo.Arguments = string.Format(strCmd, img, newImg);

            try
            {
                using (Process exeProcess = Process.Start(startInfo))
                {
                    exeProcess.WaitForExit();
                }
            }
            catch(Exception ex )
            {
                Response.Write(ex.Message);
            }

以上就是我的代码,VS中各种正常,WIN7下,IIS内运行不正常!

大叔爱罗莉的主页 大叔爱罗莉 | 初学一级 | 园豆:46
提问于:2012-01-06 09:06
< >
分享
最佳答案
1

应该还是权限问题:IIS启动Worker Process (WP)来处理HTTP请求,所有的ASP.NET代码也是在这个w3wp.exe中执行。所以为了安全性考虑,执行这个exe的时候,采用的用户身份一般是ASPNET或者Network Service(请检查IIS的配置来确认)。这样的用户是缺少很多权限的,例如执行IIS服务器所在电脑上的一些命令,或者访问一些文件夹。所以你如果有特殊的需要要执行这些东西,可以修改IIS配置来改变执行w3wp.exe的身份,或者采用ASP.NET提供的impersenation方式。

收获园豆:10
artwl | 专家六级 |园豆:16736 | 2012-01-06 10:04

我在IIS内部配置使用了Network Service用户,然后将Network Service用户加到管理员组里,运行还是不成功!您说的:"可以修改IIS配置来改变执行w3wp.exe的身份,或者采用ASP.NET提供的impersenation方式"能具体点么,这块没接触过,给个说明也好!感激不尽

大叔爱罗莉 | 园豆:46 (初学一级) | 2012-01-06 10:10

@Code男: 请问这个问题你解决了吗?

怎么解决的? 能给点建议吗?感激不尽

cctext | 园豆:156 (初学一级) | 2012-11-07 16:30
其他回答(5)
0

我们在IIS 7.0这样操作没关系,可以参考一下在ASP.NET中运行控制台程序

收获园豆:10
dudu | 园豆:30994 (高人七级) | 2012-01-06 15:38
0

我也遇到了同样的问题,有人说修改 machine.config <processModel userName="SYSTEM" enable="true"/>

我发现也不可以;

考配cmd.exe到站点bin文件夹下,我试了也不可以,如果哪位有好的建议,请提出一些博解

cctext | 园豆:156 (初学一级) | 2012-11-07 16:28
0

请问这个问题是怎么解决的呢,我现在刚好遇到,很头疼

yanyan1989 | 园豆:202 (菜鸟二级) | 2015-06-10 16:46
0

头疼+111111

MrRex | 园豆:141 (初学一级) | 2016-10-19 16:12
0

我也遇到了类似的问题,最后解决方案是:将IIS里面你程序用到的程序池的高级设置中“启用32位应用程序”置为true,“加载用户配置文件”置为true。

进击の程序猿 | 园豆:206 (菜鸟二级) | 2017-11-16 17:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册