【问题标题】:Remote WSH over HTTP via Rails通过 Rails 通过 HTTP 远程 WSH
【发布时间】:2014-01-28 22:46:18
【问题描述】:

我有一个 Windows 游戏服务器 (Mount & Blade: Warband),我试图通过 Rails 应用程序远程控制它。我找到了一种使用 Windows Script Hosting 将文本发送到游戏服务器的方法,如下所示:

Set ArgObj = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "mb_warband_dedicated"

For lcv = 0 to ArgObj.Count - 1
    WshShell.SendKeys ArgObj(lcv)
    WshShell.SendKeys "{Enter}"
Next
WshShell.SendKeys "start"
WshShell.SendKeys "{Enter}"

虽然这感觉很脆弱,但当我在本地机器上尝试时,它似乎确实有效;它成功地将焦点转移到游戏服务器,将其参数作为文本发送到游戏服务器,然后开始游戏。

我的思路是让我的 Rails 应用程序在发布游戏命令时调用 WSH 可执行文件(使用适当的 Rails 身份验证和授权以确保安全)。如果我将远程桌面连接到运行 Rails 和游戏服务器的远程计算机中,这可以工作,但是一旦我断开远程桌面会话,它就不再工作了。 Rails 服务器收到请求,调用脚本,但我猜测“AppActivate”命令找不到窗口。

如果它是一台 Linux 机器,我想我可以使用命名管道。这里有什么想法吗?电源外壳?也许TCL?我可以杀死游戏服务器进程,编辑配置,然后重新启动游戏服务器,但每个人都会断开连接。

【问题讨论】:

  • Rails 服务器是否作为 Windows 服务运行?如果是这样,您可能会遇到交互式应用程序的会话 0 隔离问题。见:blogs.technet.com/b/voy/archive/2007/02/23/…
  • 我们正在使用适用于 Windows 的 RailsInstaller。运行tasklist /svc 列出'ruby.exe',所以是的,我相信它作为Windows 服务运行并且您的链接适用,谢谢。我需要一段时间才能确定这是否会导致解决方案,但如果您将此作为答案发布,我会接受并在我有其他问题时提出一个新问题。

标签: ruby-on-rails windows powershell named-pipes wsh


【解决方案1】:

如果 Rails 服务器作为 Windows 服务运行,您可能会遇到交互式应用程序的 Session 0 隔离问题。

见:http://blogs.technet.com/b/voy/archive/2007/02/23/services-isolation-in-session-0-of-windows-vista-and-longhorn-server.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2019-01-30
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多