【问题标题】:How to run command promt command while running angular app?如何在运行 Angular 应用程序时运行命令提示符命令?
【发布时间】:2020-08-13 17:36:44
【问题描述】:

我想在用户点击 URL 时运行 2 个 cmd 命令。

taskkill /IM chrome.exe /F
start chrome.exe --kiosk -tab "www.url.com"

这是 2 个命令。 是否可以使用 typescript 或 Angular 中的其他任何东西来做到这一点?

【问题讨论】:

  • 你到底为什么要这样做?你到底想达到什么目的?
  • 我的应用程序需要在 kiosk 模式下运行,但我认为手动操作并不是最好的方法,因为这是一个在线测试门户
  • 您能否将其包含在您的原始问题中,以提供更多上下文?这是在哪里运行?您可以控制运行它的计算机吗?或者这是在任何用户的计算机上?现在能够从网页运行任意 shell 命令会有点危险,不是吗?

标签: angular typescript google-chrome kiosk kiosk-mode


【解决方案1】:

首先,你正在做的是奇怪,这应该足以表明这可能是一个坏主意,并且几乎可以肯定有更好的方法。

不过,无论如何,你的想法是错误的:Typescript 是一种语言,Angular 是一种框架;两者都没有提供与命令行交互的任何概念——它们被设计为在网络浏览器中运行(当然你不希望你访问的随机网站能够杀死你的网络浏览器)。有一些框架可以在非浏览器上下文(例如 Node.js)中运行 Javascript(以及 Typescript),但这听起来不适合您的问题。

这意味着你需要找出一个地方来部署你的特权代码在网络浏览器之外

  • 如果设计为作为信息亭运行,您可以构建一个桌面应用程序,在其中托管 Chromium 或其他 Web 浏览器(例如使用 CEF),而不是在允许您调用桌面的传统 Web 浏览器中运行来自 Javascript 的代码(因此来自 Typescript 或 Angular)。不过,此解决方案可能会破坏您尝试做的事情,因为它将取代在自助服务终端模式下运行 Chrome 的需要。
  • 您可以创建一个独立的桌面应用程序,它可以运行您想要的任何东西,还可以注册一个自定义协议处理程序(例如my-app://),然后您可以从 Chrome 调用它(请注意,默认情况下,Chrome 会在运行您的如果你这样做,代码,但如果你控制目标设备——我希望你这样做——考虑到你正在尝试做的事情——有办法禁用你注册协议的提示)。
  • 您可以构建一个在后台运行 Web 服务器的桌面应用程序,并(考虑到跨站点限制)从该已知 URL 发出请求。然后,您的服务器应用程序可以解释请求以运行任意代码(例如退出应用程序)。这是Zoom was recently chastised for implementing的方法。

请注意,在大多数情况下,不受信任的网站可能会类似地调用此代码,因此在设计时请牢记这一点。

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2010-11-30
    • 2019-05-28
    • 1970-01-01
    • 2021-08-28
    • 2017-02-26
    相关资源
    最近更新 更多