【问题标题】:Run a Windows command in Perl outside of CGI enviroment在 CGI 环境之外的 Perl 中运行 Windows 命令
【发布时间】:2013-04-19 22:46:39
【问题描述】:

我有一个特定的专有应用程序,它是双重用途的,在 CGI 上下文中运行“account.exe”(例如,从 Web 服务器内部)将使 account.exe 输出 HTML 页面等。在 CGI 上下文之外运行“account.exe”会导致 account.exe 启用某些命令行功能。

现在问题: 我想在 perl 的 CGI 上下文之外运行 account.exe。已尝试使用 system(1, "command");已尝试使用系统(“启动命令”),尝试使用 BAT 包装器来清除(SET VARIABLE=)与 CGI 相关的每个环境变量,但 account.exe 仍然“检测到”它由 Web 服务器运行并输出它的 HTML。

如何在 perl 中的 CGI 脚本中运行 windows 命令(使用草莓 perl)并让“account.exe”应用程序无法检测到执行最初来自 Web 服务器?

【问题讨论】:

  • 您还没有告诉我们“account.exe”是什么。没有这些信息,任何人都无法知道答案。
  • account.exe 是 PCOUNTER 的一部分 pcounter-europe.com

标签: windows perl cgi


【解决方案1】:

account.exe 可以通过多种方式检测其运行方式。

环境变量是一种方式;看来你已经排除了那个。

通常进程可以看到谁是他们的父母和他们的父母,所以这可能是其他方式。

因此,要么您可以进行大量测试,直到最终欺骗进程使用的特定技术,或者您可能想尝试 沙盒 以更好地控制进程可以或不能做什么看(或做)。

【讨论】:

  • 基本上,有没有办法以完全分离的方式执行进程,以便 account.exe 认为它是输入到 cmd.exe 中的?使用“cmd.exe /C [command]”没有帮助,[command] 仍然是 cmd.exe 的子级,而 cmd.exe 是 CGI 的子级。无需从 account.exe 捕获返回值,在放入 account.exe 之前进行完整性检查。
猜你喜欢
  • 2011-10-15
  • 2015-03-19
  • 1970-01-01
  • 2013-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
相关资源
最近更新 更多