1

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

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

所以这是我的代码:

//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;
}
4

3 回答 3

1

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

看看这篇文章

于 2012-04-19T18:33:17.677 回答
0

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

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

  1. 网络浏览器程序与网络服务器程序建立网络连接。
  2. Web 浏览器向 Web 服务器发送 HTTP 请求。
  3. Web 服务器处理 HTTP 请求中的信息。
  4. Web 服务器将 HTTP 响应发送回浏览器。
  5. 浏览器程序显示 HTTP 响应中包含的 HTML。

您示例中的代码是将在上述步骤 3 中运行的代码。

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

于 2012-04-19T18:51:32.607 回答
0

听起来你想在客户端机器上启动一个程序。

你不能那样做。

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

于 2012-04-19T18:29:00.743 回答