【问题标题】:Launching win32 native executable from public web site从公共网站启动 win32 本机可执行文件
【发布时间】:2009-10-02 17:46:07
【问题描述】:

我遇到了一个架构挑战,我正在寻找想法。

客户有一个现有的 win32 本机应用程序,他们非常抗拒以任何微不足道的方式进行更改。它是用非托管 c++ 编写的,并且至少使用一个 3rd 方 dll,因此它不是一个独立的 exe。它是什么并不重要,将其视为客户支持沟通工具。理想情况下,客户希望从网站启动它,而不是将其作为可安装程序发布。此外,客户需要在执行时将令牌传递给可执行文件,以便它可以打电话回家并请求更多指令。

我会继续承认,应用程序的启动方式应该是首要的设计考虑因素,而不是最后一个考虑因素——但事实就是如此。

对恶意软件、间谍软件、特洛伊木马等的安全问题使得这种分发模式不太可能发生。我在这样做方面比找到一个合法的方法来完成它有更多的经验。

欢迎任何想法(正面或负面)。

【问题讨论】:

    标签: architecture winapi desktop-application software-distribution


    【解决方案1】:

    说服客户让您的公司修复最初的设计缺陷,这很可能需要您自费。道歉。 很多

    【讨论】:

    • 我是游戏的后期玩家,与应用程序的设计或开发无关。如果我有,我会道歉的。 很多
    • 我并没有为此责备你(“你”是指你的公司——我将编辑原始消息)。客户想要他们想要的东西,而这是您公司要解决的问题。
    • 嘿,不用担心。 :) 我会向大多数人道歉。
    【解决方案2】:

    我无法就启动安装在用户 PC 上的应用程序提供任何建议。所以也许有人会就此提供建议。

    但是,还有在您的服务器上安装应用程序的替代解决方案。然后,您可以编写一些可以访问数据并通过 HTML 显示的代码。理想情况下,这可以通过受欢迎的 API、Web 服务和其他 dohickey 轻松实现。但我想这不是一个潜在的解决方案?

    您的另一个选择是类似于NDL MetaScype 的某些集成产品的产品。

    他们的产品实际上是一个屏幕抓取软件,基本上可以打开应用程序并运行万能的宏。这样做的好处是保留了所有业务逻辑(即您正在有效地输入一个字段,并且如果该字段在系统上返回错误 - 您的网络应用程序也应该发现。

    祝你好运 - 我认为如果不让用户更改他们对您的特定网站的安全设置,您会发现这非常棘手。

    【讨论】:

    • 他们准备以当前形式使用该应用程序。如果我可以重写它,我可以考虑到网络来构建它,这将不是问题。该应用程序不能很好地转换为 HTML,因此屏幕抓取无济于事。 :(
    • 我建议屏幕抓取比您想象的要好,并且可以很好地处理您的应用程序。我倾向于以与您相同的方式思考它的兼容性。如果你不能重写它,我认为这仍然是一个非常有效的选择。 (我很感激你的问题,但我想我还是会提到它。:)
    【解决方案3】:

    您可以尝试创建一个 ActiveX 控件来下载您的可执行文件并运行它,但不幸的是,这将您限制在 IE 中。它还为网页上的控件创建了一个额外的安装/运行步骤。如果您的某些客户制定了有关用户下载和运行 ActiveX 控件的政策,这可能无法为他们所接受。

    您也可以尝试将 exe 及其依赖项打包为另一个 exe 中的资源。用户可以从网页下载并运行它,该网页提取可执行文件和依赖项并运行它们。这可能比 ActiveX 路由更直接一些,但在安全策略方面仍然存在一些相同的限制。

    不幸的是,您不会找到简单的解决方案 - 从网站运行任意本机代码很难设计。

    【讨论】:

    • 我也考虑过浏览器插件路线,但我认为他们不会喜欢它。并没有热情地解释说这是“设计难”。
    • 所以。 . .他们基本上希望您找出一个希望永远不会被修补的浏览器漏洞?
    • 他们并没有真正这么看,他们只是不精通网络。但我明白你的意思。我没有兴趣使用漏洞来执行此操作,它必须以企业客户可接受的合法方式完成。
    【解决方案4】:

    我不完全确定我理解这种情况,但听起来一种选择可能是在服务器上运行应用程序,然后使用 Citrix 使客户端的 pc 能够像瘦客户端一样访问应用程序。我的大学通过许多程序(例如 Photoshop)来做到这一点。我无法访问应用程序来安装它,但我可以下载一个启动 Citrix 并运行应用程序的小文件。即使我运行的是 Mac,该应用程序也始终具有类似 Windows 的控件。当然,我仍然必须安装 Citrix,所以走这条路可能没有太多好处,但它可能比其他一些选项更容易妥协。

    第二个更疯狂的想法是将安装程序集成到应用程序中,这样当它第一次启动时,它会自行安装,然后自行启动。然后只要告诉客户第一次启动需要很长时间。

    如果我的回答表明我不理解问题,请澄清。我很想了解更多关于这种情况的信息。

    【讨论】:

    • 我现在看到迈克尔或多或少地建议了我的第二个选项。
    • 客户端应用程序必须在本地运行才能与本地硬件交互。正如您所说,它仍然需要安装通常不会安装的客户端。 :(
    • 那你基本上不是要求能够在本地安装应用程序而不在本地安装它吗?我觉得你的公司和客户之间的沟通肯定存在一些根本性的崩溃,你甚至会处于这种情况。就像我告诉你我只想要一辆小型经济型车,而你却开着火车车回到我身边。
    • 实际上,他们不想安装它——只需启动它。
    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多