【问题标题】:Using "runas" command from PHP使用 PHP 中的“runas”命令
【发布时间】:2013-09-30 22:28:46
【问题描述】:

此问题与:Using "runas" command for a program that writes a file (Windows Server 2008)

我尝试从 PHP 运行 runas 命令来运行该控制台程序:

<?php
exec("runas /savecred /user:User1 writeTxt.exe");
?>

但是从浏览器调用时它不起作用。但是,它可以通过在 PHP 交互模式下运行 (php -a) 来工作。有什么必须在浏览器中设置的吗?

【问题讨论】:

  • 尝试 phpinfo(); 并搜索 safe_mode 指令。安全模式是否激活?
  • sql.safe_mode吗?如果是,它已经关闭了。但是,自 PHP 5.4.0(我的版本是 5.4.19)以来它已经被删除:PHP:Safe Mode - Manual
  • 应该是简单的safe_mode。编辑:对不起,忘记安全模式已被删除。没关系。
  • 一个相关的问题是:exec - Running command-line application from PHP as specific user - Stack Overflow。如何在 Windows 中执行此操作?
  • 我怀疑 runas 在浏览器上运行的 PHP 中不起作用,因为命令 (runas.exe) 位于 Windows\system32 目录中。一个问题:Windows 中的 Internet 用户帐户 (IUSR) 是否对 system32 文件夹具有读取和执行权限?有人知道吗?

标签: php browser runas


【解决方案1】:

如果我在 PHP 中使用 exec()(从浏览器)调用 runas 而没有 /savecred 参数,则程序 writeTxt.exe 不会产生任何结果。似乎没有机制让浏览器向用户询问runas 的密码。

在 PHP 交互模式下,一旦为runas 提供了用户密码,/savecred 的使用将导致程序直接执行而无需输入密码。显然,PHP 的交互模式与浏览器的 PHP 是不同的会话。由于浏览器没有为runas 询问用户密码的机制,/savecred 显然对浏览器会话毫无用处。

关于我对system32 文件夹的IUSR 权限的评论,我已经使用此代码对其进行了测试:

<?php
exec("whoami");            // whoami.exe is in the system32 folder
?>

浏览器将显示IUSR。所以IUSRsystem32 文件夹具有读取和执行权限。

【讨论】:

  • 那么您找到解决方案了吗?如果你这样做了,请分享。
  • 对不起,我已经很久没有做这个了。实际上这个问题是“诞生”的,因为我想使用 PHP 运行 Microsoft Speech SDK 控制台应用程序:Running Windows Speech SDK Application in PHP.
猜你喜欢
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多