Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从asp.net启动外部程序_C#_Asp.net_.net 4.0_Launching Application - Fatal编程技术网

C# 从asp.net启动外部程序

C# 从asp.net启动外部程序,c#,asp.net,.net-4.0,launching-application,C#,Asp.net,.net 4.0,Launching Application,我有一个关于从asp.net网站启动外部应用程序的问题。现在我认为有安全措施可以防止这种情况发生,我知道这不是一个好的做法,但对于我正在开发的内部网站来说,能够做到这一点是非常方便的 到目前为止,我已经找到了可以启动外部应用程序的地方,如果我在本地运行服务器(在调试中),那么它就可以正常工作。当我将文件发布到我的Web服务器时,它将不再工作。我知道我的文件路径将与我想象的不同,但如何检查本地文件是否存在?或者我可以吗 这是我的代码: //the actual launch button on t

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

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

这是我的代码:

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

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

你不能那样做


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

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

你不能那样做


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

我知道一种使用ActiveX控件的方法,但它只能与Internet Explorer一起使用


看看这个。

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


看看这个。

我只是在写@Slaks写的东西,但是用了更多的词

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

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


    这应该足够让您了解为什么不能以您想要的方式启动流程,但如果您看不到,请告诉我,我将进一步解释。

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

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

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


    这应该足够让您了解为什么不能按您想要的方式启动进程,但如果看不到,请告诉我,我将作进一步解释。

    注意,您应该在tnetpath字符串之前使用@,以避免反斜杠:@“c:\path\tnet.exe”或“c:\\path\\tnet.exe”是的,我注意到我没有把它复制过来。不过,感谢您捕捉到这一点。请注意,您应该在tnetpath字符串之前使用@,以避开反斜杠:@“c:\path\tnet.exe”或“c:\\path\\tnet.exe”是的,我注意到我没有复制它。谢谢你抓住了,好的。这是我可以调查的。不过,这只是在后台以用户的身份启动程序,还是会为用户实际弹出程序?比如说,如果我想从网站上为用户启动某种类型的客户端应用程序。这是我可以调查的。不过,这只是在后台以用户的身份启动程序,还是会为用户实际弹出程序?比如说,如果我想从网站上为用户启动某种类型的客户端应用程序,我将对此进行研究。我们(不幸的)主要使用IE,所以如果这是唯一的方法,这可能对我们有用。谢谢你的链接!好的,这就是我最终要走的路线,我让它按照我需要的方式工作。再次感谢!我会调查的。我们(不幸的)主要使用IE,所以如果这是唯一的方法,这可能对我们有用。谢谢你的链接!好的,这就是我最终要走的路线,我让它按照我需要的方式工作。再次感谢!