通过Asp.net交付服务器端Windows exe应用程序

问题描述 投票:1回答:1

我有一个与客户争执了几个星期的奇怪要求。

该客户端具有独立的Winform exe和Web应用程序,它们位于Windows 2012 Server上。该计划是将exe应用程序合并到Web应用程序中,以便可以通过浏览器呈现或通过超链接调用它。 exe应用程序是可移植的。 Web应用程序在用C#编写的.NET Framework 3.5上运行。

由于服务器上的高安全性限制,我的尝试似乎都无效。当我单击页面上的按钮时,没有任何反应。

我现在正在探索通过WebDAV向最终用户交付exe应用程序。任何想法都会有所帮助

我尝试了以下操作:

在web.config上,我设置了路径。

<appSettings>
        <add key="EXELOC" value="C:\Temp\addons\"/>

</appSettings>

在aspx页面上,我有一个调用应用程序的按钮。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
using System.Configuration;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnStart_Click(object sender, EventArgs e)
    {
        string locn = ConfigurationManager.AppSettings["EXELOC"];
        Process myProcess = new Process();

        try
        {
            myProcess.StartInfo.UseShellExecute = True;
            myProcess.StartInfo.FileName = locn + "Application.exe";
            myProcess.StartInfo.CreateNoWindow = true;
            myProcess.Start();           

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    }

我为IIS应用程序池设置了访问该exe所在文件夹的权限:

$IncomingPath = "C:\Temp\Addons"
$Acl = Get-Acl $IncomingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\addons","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncomingPath $Acl

我也尝试使用URI:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Ach]
@="URL:Ach Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\Ach\DefaultIcon]
@="C:\\Temp\\addons\\Application.exe"

[HKEY_CLASSES_ROOT\Ach\shell]

[HKEY_CLASSES_ROOT\Ach\shell\open]

[HKEY_CLASSES_ROOT\Ach\shell\open\command]
@="\"C:\\Temp\\addons\\Application.exe\" /u \"%1\""

我也尝试过设置应用程序UNC并通过Javascript进行调用:

<script type="text/javascript" language="javascript">
        function RunFile() {
        WshShell = new ActiveXObject("WScript.Shell");
        WshShell.Run("\\\\192.168.5.8\\Applications\\Application.bat", 1,false);
        }
    </script>

什么都没有。

c# windows winforms iis-8
1个回答
0
投票

现在该告诉客户,除非他愿意为重新开发整个平台付费,否则他想要的东西并不重要,这意味着数千万的成本。不管他想要什么,这根本不是事情的运作方式。在服务器上运行的.exe文件不会神奇地将其输出传输到浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.