从ASP.NET C#启动一个程序

时间:2011-08-26 19:50:23

标签: c# asp.net process

我有一个程序(我创建),我想在网页加载时在服务器上启动它。

这是我的代码

public partial class _Default : System.Web.UI.Page
{
    Process app = new Process();
    protected void Page_Load(object sender, EventArgs e)
    {
        app.StartInfo.FileName = @"D:/Path to /My/Program to be run.exe";
        app.Start();
    }
}

现在应用程序已“运行”,但它会立即崩溃。 如果我只是运行应用程序(通过双击exe)它运行,一切都很好。

有人看到我在这里遗失了什么吗?

5 个答案:

答案 0 :(得分:10)

您可以使用ProcessStartInfo。

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"D:/Path to /My/Program to be run.exe";
psi.WorkingDirectory = IO.Path.GetDirectoryName(psi.FileName);
Diagnostics.Process.Start(psi);

答案 1 :(得分:3)

听起来您正在尝试运行的应用程序具有用户界面。如果您打算使用ASP.NET应用程序池帐户在服务器上运行它,那么如果将应用程序设计为控制台应用程序,并且保护所有对外部资源(如HMI设备)的访问权限,则可以减少问题。记录的异常。

答案 2 :(得分:3)

这是一个安全问题。从bin文件夹外部运行任何exe都会带来安全威胁。您必须复制您尝试在bin文件夹中运行的exe。

答案 3 :(得分:0)

这取决于你想要跑的东西。也许当你从C#应用程序运行它时,缺少某些东西。您也可能没有从C#运行应用程序的正确权限。这就是我所能说的,而不知道什么是试图运行。

答案 4 :(得分:-1)

您是否在Javascript中尝试过类似的内容: -

var shell = new ActiveXObject("Shell.Application");
var appExe =  @"D:/Path to /My/Program to be run.exe";
shell.ShellExecute(appExe , "", "", "open", "1");