我有一个关于从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;
}
答案 0 :(得分:1)
我知道使用ActiveX控件的方法,但它只适用于Internet Explorer。
查看此post。
答案 1 :(得分:0)
听起来您想要在客户端计算机上启动程序。
你做不到。
如果您使用的是同一个域并使用Windows身份验证,则应该可以使用模拟和SysInternals PsExec.exe远程启动该进程。
答案 2 :(得分:0)
我只是在写@Slaks所写的内容,但使用了更多的单词。
当您浏览网页时,会发生以下情况。
示例中的代码是将在上面的步骤3中运行的代码。
这应该足以让您了解为什么不能以您希望的方式启动流程,但如果您没有看到它,请告诉我,我会解释更多。