从asp.net启动外部程序

时间:2012-04-19 18:26:32

标签: c# asp.net .net-4.0 launching-application

我有一个关于从asp.net网站启动外部应用程序的问题。现在我认为有一些安全措施来防止这种情况,我知道这不是一个好的做法,但对于我正在开发的内部网站点来说,能够做到这一点会非常方便。

到目前为止,我发现如果我在本地运行我的服务器(在调试中),我可以启动外部应用程序,然后它可以正常工作。当我将文件发布到我的网络服务器时,它不再有效。我知道我的文件路径会有所不同,但我怎样才能检查本地文件是否存在?或者我可以吗?

所以这是我的代码:

//the actual launch button on the page
protected void btnLaunchTnet_Click(object sender, EventArgs e)
{
    string tnetpath = "c:\path\tnet.exe";      
    RunProcess(tnetpath, "");
}


private void RunProcess(string cmd, string arguments)
{
    System.Diagnostics.Process p;
    p = new System.Diagnostics.Process();

    p.StartInfo.FileName = cmd;

    if (arguments.Length > 1)
    {
        p.StartInfo.Arguments = arguments;
    }
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.UseShellExecute = false;
    p.Start();
}

我还快速'检查此文件是否存在',用于禁用或启用启动应用程序的按钮

private bool CheckFileExists(string filepath)
{
    FileInfo SetupPath = new FileInfo(filepath);
    return SetupPath.Exists;
}

3 个答案:

答案 0 :(得分:1)

我知道使用ActiveX控件的方法,但它只适用于Internet Explorer。

查看此post

答案 1 :(得分:0)

听起来您想要在客户端计算机上启动程序。

你做不到。

如果您使用的是同一个域并使用Windows身份验证,则应该可以使用模拟和SysInternals PsExec.exe远程启动该进程。

答案 2 :(得分:0)

我只是在写@Slaks所写的内容,但使用了更多的单词。

当您浏览网页时,会发生以下情况。

  1. 网络浏览器程序与网络服务器程序建立网络连接。
  2. Web浏览器向Web服务器发送HTTP请求。
  3. Web服务器处理HTTP请求中的信息。
  4. Web服务器将HTTP响应发送回浏览器。
  5. 浏览器程序显示HTTP响应中包含的HTML。
  6. 示例中的代码是将在上面的步骤3中运行的代码。

    这应该足以让您了解为什么不能以您希望的方式启动流程,但如果您没有看到它,请告诉我,我会解释更多。