Architecture 从公共网站启动win32本机可执行文件

Architecture 从公共网站启动win32本机可执行文件,architecture,winapi,desktop-application,software-distribution,Architecture,Winapi,Desktop Application,Software Distribution,我遇到了一个架构上的挑战,我正在寻找想法 客户有一个现有的win32本机应用程序,除了琐碎的方式外,它们很难进行任何更改。它是用非托管C++编写的,它使用至少一个第三方DLL,因此它不是独立的EXE。它是什么并不重要,可以将其视为客户支持沟通工具。理想情况下,客户希望从web站点启动此程序,而不是将其作为可安装程序发布。此外,客户需要在可执行文件执行时将令牌传递给可执行文件,以便它可以呼叫总部并请求更多指令 我将继续承认,如何启动应用程序应该是第一个设计考虑因素,而不是最后一个——但它就是这样

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

客户有一个现有的win32本机应用程序,除了琐碎的方式外,它们很难进行任何更改。它是用非托管C++编写的,它使用至少一个第三方DLL,因此它不是独立的EXE。它是什么并不重要,可以将其视为客户支持沟通工具。理想情况下,客户希望从web站点启动此程序,而不是将其作为可安装程序发布。此外,客户需要在可执行文件执行时将令牌传递给可执行文件,以便它可以呼叫总部并请求更多指令

我将继续承认,如何启动应用程序应该是第一个设计考虑因素,而不是最后一个——但它就是这样

对恶意软件、间谍软件、特洛伊木马等的安全担忧使其成为一种非常不可能的分发模式。我没有这样做的经验比找到一个合法的方法来完成它要多


欢迎任何意见(正面或负面)。

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

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


不幸的是,你找不到一个简单的解决方案——从网站上运行任意本机代码在设计上是很困难的。

我无法提供任何关于启动安装在用户PC上的应用程序的建议。因此,也许有人会提供这方面的建议

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

您的另一个选择是类似于中的一些集成产品的产品

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


祝你好运-我想如果不让用户更改特定站点的安全设置,你会发现这非常棘手。

说服客户让你的公司修复原始设计缺陷,很可能是由你自己承担费用。道歉。很多。

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

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


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

我也考虑过浏览器插件路线,但我认为他们不会喜欢。解释说这是“设计上的困难”没有受到太多热情的欢迎。所以…他们基本上希望你找出一个可能永远不会被修补的浏览器漏洞?他们不是真的这么看,他们只是不懂网络。但我明白你的意思。我对使用漏洞来做这件事不感兴趣,它必须以公司客户可以接受的合法方式完成nts。他们开始以当前的形式使用该应用程序。如果我可以重写它,我可以在设计它时考虑到网络,这不会是一个问题。该应用程序不能很好地转换为HTML,因此屏幕抓取不会有多大帮助(我建议屏幕抓取比你想象的要好,处理你的应用也不错。我倾向于用和你一样的方式思考它的兼容性。如果你不能重写它,我认为这仍然是一个非常有效的选择。(我很感激你问这个问题,但我想我还是要提一下。)我是一个非常晚的游戏玩家,与应用程序的设计或开发无关。如果我有,我会道歉。很多。我没有为此责备你(我说的“你”是指你的公司——我会编辑原始消息)。客户想要他们想要的,而这是你公司的问题。呵呵,不用担心。:)对于这个问题的答案,我向大多数人表示歉意。现在我知道我的第二个选择或多或少是Michael建议的。客户端应用程序必须在本地运行,才能与本地硬件交互。正如您所说,它仍然需要安装通常尚未安装的客户端:(那么,你基本上不是在要求能够在本地安装应用程序而不在本地安装吗?我觉得一定有一些非常基本的bre