rundll 的 PHP 执行
Posted
技术标签:
【中文标题】rundll 的 PHP 执行【英文标题】:PHP execution for rundll 【发布时间】:2013-12-28 10:02:02 【问题描述】:有人知道如何在 php 中执行以下代码吗?
<?php
$output = "rundll32 printui.dll PrintUIEntry /in /n \\omgb-omga-1\printer-hr";
?>
运行上面没有添加网络打印机...
我在 php 中的语法是否正确?因为当我将命令粘贴到命令提示符时,我可以添加打印机。
【问题讨论】:
【参考方案1】:使用exec()(注意可能需要添加rundll32.exe
的完整路径):
$output = array();
exec("C:\\Windows\\system32\\rundll32.exe PrintUIEntry /in /n \\\\omgb-omga-1\\printer-hr", $output);
var_dump($output);
根据this answer,反斜杠应该被转义(我在我的例子中做了),但我不确定命令的参数是否需要它。
注意exec()
只返回命令返回的最后一行;要获得整个输出,您需要使用一个单独的数组(此处为 $output
),该数组将填充命令的输出。
【讨论】:
我尝试了你所说的,这是我的 php 代码中现在的内容 我仍然没有看到它被添加。我在页面上看不到任何错误 我认为当我运行我在第一次回复中给出的代码时,它只是添加了打印机并且在命令提示符下没有得到任何输出。所以我按照你所说的方式执行,这是我在网页中得到的:“array (size=0) empty”这有意义吗? “c:\windows\system32\rundll32 printui.dll PrintUIEntry /in /n \\omgb-omga-1\printer-hr” 添加打印机没有任何问题...这是我想在按钮上执行的相同命令按...但这似乎不起作用...如果我有什么问题请告诉我以上是关于rundll 的 PHP 执行的主要内容,如果未能解决你的问题,请参考以下文章
text 可以由mshta或rundll32执行的Scriplet,用于执行任意代码