【问题标题】:Can ASP.Net application run Local Exe files on Button ClickASP.Net 应用程序可以在按钮单击上运行本地 Exe 文件吗
【发布时间】:2012-09-01 06:42:20
【问题描述】:

我在服务器上部署了一个 ASP.Net 应用程序。我想知道它是否能够在单击按钮时访问我的本地系统 exe 文件。

我在互联网上阅读了很多关于此的文章。有人说 ASP.Net 应用程序无法访问本地程序。虽然有些人建议这取决于权限、身份和其他东西。

我在本地计算机上尝试了类似的操作,但即使在授予本地系统访问权限、文件的网络服务甚至将应用程序池标识更改为本地系统之后,我也无法完成相同的操作...

所以我只是想确认一下这件事是否可能......

这是我要执行的代码

 Dim pstartinfo As New ProcessStartInfo()
        Dim p As New Process()

        pstartinfo.WorkingDirectory = "D:\VS2010Projects\SignatureCaptureWindows\bin\Debug"
        pstartinfo.FileName = "SignatureCaptureWindows.exe"
        pstartinfo.CreateNoWindow = False

        p = Process.Start(pstartinfo)

        p.WaitForExit()

        If (Not p.ExitCode.Equals(0)) Then

            Response.Write("Image Successfully saved in Database with ID = " + p.ExitCode.ToString())
            DisplaySavedImage(p.ExitCode)
        Else

        End If

在 locahost 上运行时,它工作正常。当我在本地 IIS 上部署它时,它不会打开 exe

【问题讨论】:

  • 请澄清-您尝试了什么?什么没用?代码示例将是最好的。
  • SignatureCaptureWindows.exe 是做什么的?
  • 它将启动一个 VB.Net windows 应用程序,用户可以在那里输入签名并保存它们
  • 用户是网络服务器。你想要的行不通。正如我在回答中所说 - 如果您希望与 exe 进行交互,这是不可能的。

标签: asp.net .net vb.net permissions


【解决方案1】:

可能并且需要应用程序池用户对可执行文件的位置具有权限并具有执行它的权限。

您可以使用Process 类来执行几乎任何事情(即使需要不同的用户凭据)。

不要忘记,尝试使用 UI 运行应用程序通常不会正常工作,因为应用程序池不会在交互式环境中运行(因此,它无法打开窗口和单击按钮)。

您应该限制自己使用非交互的可执行文件,因为 Web 服务器将无法与窗口等交互。


在您的特定场景中,您需要用户输入他们的签名并保存 - 您需要他们上传签名(我假设图像文件已经存在),或 在客户端创建这样的图像(例如使用canvas 和JavaScript)。然后您可以上传图片并保存。

【讨论】:

  • 您的意思是运行位于服务器上的 exe 对吗?还是任何本地计算机?
  • @Oded 是否可以执行位于客户端指定路径的exe文件
  • @Mako - 不。出于安全原因,浏览器被沙盒化(想象一下,任何网页在浏览时都可以在您的机器上执行任何操作!)
  • 在我的网络应用程序中,我们有一个“获取签名”按钮,它应该调用这个 exe。然后,用户可以在 Signature PAD 设备中输入签名,然后将其作为二进制数据存储在数据库中
  • @Mako - 在某些情况下这是可能的,但不是一般情况。如果您使用 IE 并签署您的 JS 脚本,您可能能够获得提升的权限来运行本地可执行文件。坦率地说,你应该重新考虑你的方法。
猜你喜欢
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多