Skip to main content
 首页 » 编程设计

c#之如何从 Web 应用程序在多个客户端上远程执行程序

2024年01月29日27kuangbin

所以我对我正在从事的项目有以下要求,但我想不出最好的(或任何,就此而言)的方法来做到这一点。

我在总部的 IIS 上安装了一个 asp.net 网络应用程序。当特定事件发生时,我需要在整个公司动态选择的 PC 子集上显示一条消息。由于此过程的时间限制( react 时间为 4 小时),必须显示该消息,并且我们在法律上不能不显示该消息。

所以我需要做以下事情:

  • 向用户显示消息。我有一个 winforms 应用程序,它会显示一个对话框,摆脱它的唯一方法是单击一个大的“确认”按钮。
  • 确保显示消息。某种类型的报告表明是的,它已被展示并随后得到确认。
  • 表单未显示时的 react 方式。

我考虑了以下几点:

  • PsExec - 在我的网络应用程序中异步迭代每个节点以触发远程 可执行文件位于每台 PC 上。
  • .NET Remoting - 我对此一点都不熟悉,这让我转向了 WCF。它对我想做的事情有用吗?
  • WCF 回调 - 这些似乎需要持续连接,我不确定这对我们的基础设施意味着什么。我想象一个客户端服务会启动应用程序或以某种方式显示表单。
  • 我们的调度软件 (Tidal Enterprise Scheduler) - 远程执行可执行文件。这会引入更多的故障点。

在 SO 看来,解决此问题的最佳方法是什么?预先感谢您的帮助。

请您参考如下方法:

一种方法是:

  1. 在每个桌面上安装一个客户端应用
  2. 让该应用程序(在定时事件上)调用网络服务以获取它需要显示的任何消息,或者直接联系数据库服务器以获取它需要显示的消息。
  3. 消息显示后,让应用程序告诉网络服务或 sql 服务器它已被看到。记录日期时间和登录用户。

您的网络应用程序应该只是将消息存储在数据库中;而且,如果您想要一点稳健性,请公开桌面应用程序调用的 Web 服务以检索消息并将它们标记为已查看。这将避免需要让桌面应用程序直接与 sql server 对话,并且意味着桌面应用程序可以安装在世界任何地方。

桌面应用程序的安装方式应使其无法被禁用/关闭/卸载。有无数种方法可以做到这一点。

我不会使用您定义的任何方法,因为它们很复杂并且引入了太多的脆弱性。

更新 锁定应用程序的几种方法就在我的脑海中:

  1. 拥有以管理员身份运行的监视程序服务,用于监视桌面应用程序。如果它被杀死,则强制它重新启动。您可以通过 WMI 进行监控。一些 AV 软件可以做到这一点。请务必剥夺用户停止服务的权利。
  2. 取消用户使用或访问任务管理器的权限。很多病毒变种都这样做,而且从 group policy settings 很容易做到.
  3. 如果它们在域中,请确保您的组策略设置强制安装您的桌面应用程序并强制其在 Windows 启动时自动运行。

如果您真的希望它有效,请执行以下操作: 确保您的应用程序每小时通知一次主服务器它正在运行。让 CEO 发出一条消息,说明如果该应用程序被关闭,相关员工将被解雇。他们可能会用比这更好的措辞。定期运行审计报告并解雇几个人以吓跑其他人。我保证在那之后没有人会搞砸它。

确保审计报告得到经理的确认……毕竟员工可能不在那天。 ;)