asp.net 运行cmd.exe 放服务器上就有问题

yumi_yu 2009-04-20 03:48:14
由于项目需要将excel上传后程序自动转换成pdf不知为何在本地开发环境下测试是可以的但是一旦架到IIS上结果就不执行以下线程,其他程序都是好的,就是这个不行?不知是什么原因麻烦知道的各位帮忙下或者提供意见O(∩_∩)O谢谢

Public Sub StartConvertPDF()
Dim proc As New Process()
proc.StartInfo.FileName = "cmd.exe"
proc.StartInfo.WorkingDirectory = sPath //路径例如C:\
proc.StartInfo.CreateNoWindow = True
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardInput = True '标准输入重定向
proc.StartInfo.RedirectStandardOutput = True '标准输出重定向
proc.StartInfo.RedirectStandardError = True
proc.Start()
proc.StandardInput.WriteLine(("cscript //nologo " & sPath & "XlsPdf.js " + sPath + strExcel & " ") + sPath & " ")
proc.StandardInput.WriteLine("exit")
sExecResult = proc.StandardOutput.ReadToEnd() '返回脚本执行的结果
proc.WaitForExit()
proc.Close()
End Sub
...全文
1303 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzn1987 2010-06-09
  • 打赏
  • 举报
回复
有没有想过用其他的、安全性高些的方式解决这问题呢?我是说不掉用CMD,可不可以写代码或另外写应用解决这问题呢?
dengyun_1223 2009-04-29
  • 打赏
  • 举报
回复
up
yumi_yu 2009-04-29
  • 打赏
  • 举报
回复
问题解决了,真的是权限的问题,╮(╯▽╰)╭

要在架构的IIS上面把该网站的权限设置成“NetWork Service”(是本地的内置账户组),然后在把该“NetWork Service” 加入到架构IIS的服务器的administrator的组里面~~

不过那样做后第一次还是显示不行不过有成功转换不知道为什么,但是在上传一次就ok了~~

我自己在找找原因~~现在结贴谢谢大家的帮忙~~(~ o ~)~
datahandler2 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 yumi_yu 的回复:]
问题解决了,真的是权限的问题,╮(╯▽╰)╭

要在架构的IIS上面把该网站的权限设置成“NetWork Service”(是本地的内置账户组),然后在把该“NetWork Service” 加入到架构IIS的服务器的administrator的组里面~~

不过那样做后第一次还是显示不行不过有成功转换不知道为什么,但是在上传一次就ok了~~

我自己在找找原因~~现在结贴谢谢大家的帮忙~~(~ o ~)~
[/Quote]
asp.net对应的IIS的权限默认应该是NetWork Service组啊。奇怪为什么要改换其他的。另外服务器端转换exec为pdf。我觉得这个要妥善处理好。不然你们的服务器安全性太不安全了。调用系统cmd.exe或系统的可执行文件,NetWork Service组本身就把IIS站点的权限与系统权限安全隔离。把这个加入到administrator组。我还是觉得很不可思议。
yumi_yu 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 herojams 的回复:]
IIS中虚拟目录的执行权限是否已是"脚本和可执行文件"
proc.StartInfo.UserName;
proc.StartInfo.Password;
这个也赋值试试看
[/Quote]
同样也不行呢?╮(╯▽╰)╭
不知道是不是因为cmd.exe运行的字符过多造成不能运行呢??我试试
yumi_yu 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 net_lover 的回复:]
在web.config里启用模拟,设置管理员帐户,要执行的文件最好放在web下
试试
[/Quote]
尝试了不行哦~
stonehy520 2009-04-24
  • 打赏
  • 举报
回复
不会,帮顶
孟子E章 2009-04-24
  • 打赏
  • 举报
回复
在web.config里启用模拟,设置管理员帐户,要执行的文件最好放在web下
试试
yumi_yu 2009-04-24
  • 打赏
  • 举报
回复
(⊙o⊙)…没有朋友注意到(⊙_⊙)?

麻烦知道或者有点头绪的朋友都帮帮忙~~~~
_see_you_again_ 2009-04-24
  • 打赏
  • 举报
回复
IIS中虚拟目录的执行权限是否已是"脚本和可执行文件"
proc.StartInfo.UserName;
proc.StartInfo.Password;
这个也赋值试试看
yumi_yu 2009-04-24
  • 打赏
  • 举报
回复

(*^__^*) 嘻嘻……O(∩_∩)O谢谢大家只是觉得太困惑了为什么开发环境都可以ok就IIS环境那么折磨人(*^__^*) 嘻嘻…… ╮(╯▽╰)╭

耐心耐心~~

努力努力
“凌风” 我是把cmd.exe完全控制权限都给Everyone了哦~~~O(∩_∩)O~
ahwangyibo 2009-04-24
  • 打赏
  • 举报
回复
看看服务器有未禁用WScript。一般服务器会禁用的。如果不禁用,上传一个木马调用WScript(你的cmd不属于)可以修改服务器很多东西的
「已注销」 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 yumi_yu 的回复:]
引用 20 楼 zsh0809 的回复:
引用 6 楼 yumi_yu 的回复:
(⊙o⊙)…都说是权限问题如果真是权限问题应该如何去设置了??

其中有个 问题就是
proc.StartInfo.WorkingDirectory = sPath
(sPath=E:\存放的的路径)
不知道这个是否有影响在sPath中为绝对路径但是IIS上面是否有影响

權限問題,這個範疇太大了,有人說到具體哪個權限了么?
我覺得就是這個絕對路徑問題。我想大家都遇到過用JavaScript寫的腳本裡面…
[/Quote]
你再試試吧,首先定位這肯定是一個小問題,所以好好查查就好了,耐心點!
clal 2009-04-24
  • 打赏
  • 举报
回复

public static string flvtool = "flvtool/flvtool2.exe"; //flv标记工具
public string catchFlvTool(string fileName)
{
//System.Web.HttpContext.Current.Response.Write(VideoDecoder.flvXml);
//
string flvtools = VideoDecoder.flvTools;
//
string flv_xml = this.flvXml;
//
System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo("cmd");
ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//
ImgstartInfo.Arguments = " /c" + flvtools + " " + fileName + " -UPx > " + flv_xml;

int psId;
try
{
System.Diagnostics.Process ps = new System.Diagnostics.Process();
ps.StartInfo = ImgstartInfo;
ps.Start();
psId = ps.Id;
ps.WaitForExit();
}
catch
{
return "";
}
//

if (System.IO.File.Exists(flv_xml))
{
this.UpdateVideoData(flv_xml);
if(System.IO.File.Exists(this.oldFile))
{
System.IO.File.Delete(this.oldFile);
}
}

return "";
}

这是以前做FLV文件转换的一段代码
里面也是用Cmd.exe来读取文件信息
我的cmd.exe是从我调试的机器上拷贝过去的
cmd.exe文件我给了users组 读和运行权限
makun0624 2009-04-24
  • 打赏
  • 举报
回复
学习`支持`关注`
wonsoft 2009-04-24
  • 打赏
  • 举报
回复
B/S模式是在服务器上运行,不是在客户端哦。
yumi_yu 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zsh0809 的回复:]
引用 6 楼 yumi_yu 的回复:
(⊙o⊙)…都说是权限问题如果真是权限问题应该如何去设置了??

其中有个 问题就是
proc.StartInfo.WorkingDirectory = sPath
(sPath=E:\存放的的路径)
不知道这个是否有影响在sPath中为绝对路径但是IIS上面是否有影响

權限問題,這個範疇太大了,有人說到具體哪個權限了么?
我覺得就是這個絕對路徑問題。我想大家都遇到過用JavaScript寫的腳本裡面
用Run運行那些計算器、畫圖…
[/Quote]
其实我一开始也是觉得是这个问题~~不知道是不是因为IIS里面的虚拟路径跟绝对路径出问题了吗?但是如果不用绝对路径又不能执行到哪里会出错~哎~~努力努力尝试~~
「已注销」 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yumi_yu 的回复:]
(⊙o⊙)…都说是权限问题如果真是权限问题应该如何去设置了??

其中有个 问题就是
proc.StartInfo.WorkingDirectory = sPath
(sPath=E:\存放的的路径)
不知道这个是否有影响在sPath中为绝对路径但是IIS上面是否有影响
[/Quote]
權限問題,這個範疇太大了,有人說到具體哪個權限了么?
我覺得就是這個絕對路徑問題。我想大家都遇到過用JavaScript寫的腳本裡面
用Run運行那些計算器、畫圖板、注冊表什麽的都沒問題的吧,可是把絕對路徑放裡面
你試試,程序運行不了了吧?因為系統不認識這個路徑,要修改相關注冊表才能運行的。
這個問題樓主可以搜一下,挺多的。
以上只是個人看法,正確與否,另當別論。

wanghao3616 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 net_lover 的回复:]
在web.config里启用模拟,设置管理员帐户,要执行的文件最好放在web下
试试
[/Quote]
啊 孟老大
yumi_yu 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 net_lover 的回复:]
在web.config里启用模拟,设置管理员帐户,要执行的文件最好放在web下
试试
[/Quote]
(*^__^*) 嘻嘻……恩 我试试看O(∩_∩)O谢谢
加载更多回复(13)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧