0

我在 C# 中为 ASP.NET 创建了一个页面来运行一个 exe 文件。我使用以下代码创建了一个按钮和一个事件:

        ProcessStartInfo info = new ProcessStartInfo(@"C:\inetpub\wwwroot\Share\myfile.exe");
        info.UseShellExecute = false;
        info.RedirectStandardInput = true;
        info.RedirectStandardError = true;
        info.RedirectStandardOutput = true;

        //info.UserName = dialog.User;
        info.UserName = "username";
        string pass = "MY pass";
        System.Security.SecureString secret = new System.Security.SecureString();
        foreach (char c in pass)
            secret.AppendChar(c);
        info.Password = secret;
        Process.Start(info);   

我从编译器执行并正常运行,但是当我在 localhost 中发布我的项目时,我没有采取任何行动。问题是什么?

4

3 回答 3

3

你尝试了什么?应该是权利的问题。默认情况下,您的网站不应该能够执行外部可执行文件,因为这会带来严重的安全风险。也许您的问题有不同的解决方案,不涉及运行外部程序?

无论哪种方式,我都强烈建议不要直接从您的网站运行可执行文件。如果你真的必须运行程序,也许你可以编写一个简单的 Windows 服务,它可以接收消息(通过 WCF?),然后它将在隔离环境中执行你的程序。

于 2012-05-13T21:29:34.477 回答
0

在 asp.net 中执行(运行)应用程序,我使用了这种方法:

1)查看其他网站上的代码:

或者

2)在web.config中,在“ assemblyIdentity ”字段中,我添加了“impersonate”参数,如下所示:

从改变

<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>

<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" impersonate="true" userName="myuser" password="123123"/>

(首先,您可能需要为该文件夹设置 sql/windows 用户和密码权限)。

2)然后我在我的 asp.net 中使用了该命令(也许也使用了 asp 2.0):

System.Diagnostics.Process.Start("C:\\inetpub\\my_application.exe" , "with-any-parameters");
于 2014-07-23T17:30:38.657 回答
-1

你可以试试

System.Diagnostics.Process.Start(MapPath("Windowscalculater.exe"))

或者

Dim p As New Process
p.StartInfo.FileName = MapPath("Windowscalculater.exe")
p.Start()
于 2018-08-08T12:58:23.133 回答