1

我正在尝试使用 C# 后面的代码在 asp.net 中单击按钮打开记事本、计算器。我尝试了代码

 System.Diagnostics.Process.Start("c:\\windows\\system32\\notepad.exe");

这在本地系统中工作正常,但在服务器中不工作。我什至尝试过使用 javascript

function executeCommands(inputparms)
{
alert('ff');
var oShell = new ActiveXObject("Shell.Application");
var commandtoRun = "C:\\Winnt\\Notepad.exe";
if (inputparms != "")
{
    var commandParms = document.form1.filename.value;
}

oShell.ShellExecute(commandtoRun, commandParms, "", "open", "1");
}

即使这样也行不通。您能否建议我如何在不干扰服务器记事本的情况下在客户端打开记事本应用程序。

4

6 回答 6

5

这是做不到的。想象一下,如果网页可以在客户端机器上运行任意程序,我们会陷入安全混乱。等一下... ;-)

于 2011-04-19T06:10:32.970 回答
2

这是不可能的(通常,尽管您可以使用各种小程序和浏览器插件)。事实上,如果任何网页都可以在我的计算机上执行任意程序,我会感到非常羞愧。

于 2011-04-19T06:08:51.773 回答
1

你不能做这个。ASP.NET 在服务器上运行,您不能在客户端计算机上运行程序。您显示的 ActiveX 对象应该可以工作,但只能在 IE 中使用,并且只有在用户明确授权执行它之后。此外,notepad.exe 的位置可能因客户端而异(可能是 c:\windows、c:\winnt 等,而某些在 Linux 或 MacOS 上运行的客户端没有这样的可执行文件)

于 2011-04-19T06:08:00.420 回答
1

由于 ASP.Net 的应用程序性质,您试图实现的目标是不可能的。该应用程序将在服务器上执行,并且只会将客户端 HTML 发送到客户端。即使您的代码在语法上是正确的,它也会在服务器本身上打开实用程序。

于 2011-04-19T06:10:11.567 回答
-2

这可以通过单击服务器按钮或链接使用以下代码来实现。System.Diagnostics.Process.Start("notepad.exe");

于 2012-04-19T02:46:29.460 回答
-2
System.Diagnostics.Process.Start("C:\Windows\System32\calc.exe")

工作正常,但您可能需要调整浏览器上的设置。确保 calc.exe 在目录中。

于 2012-06-25T21:58:31.803 回答