Tal*_*man 5 php windows cmd openssh psexec
我通过连接到SSH的远程PHP脚本运行以下代码:
cmd /C start "" /MAX /b "C:\Windows\System32\notepad.exe"
Run Code Online (Sandbox Code Playgroud)
该过程确实启动,但它仍然在后台,并且无法在远程桌面上完全打开.有没有办法让它以交互方式工作(比如PSExec如何使用-i标志)?
编辑:
所以PHP连接到SSH ssh2_connect然后ssh2_exec以下列方式使用:
if (!($stream = ssh2_exec($con, $shcom ))) {
Run Code Online (Sandbox Code Playgroud)
$shcom传递给SSH的命令在哪里,例如:
$shcom = 'cmd.exe /C start "" /MAX "%SystemRoot%\System32\calc.exe"';
Run Code Online (Sandbox Code Playgroud)
我之前使用PSExec和PuTTY(请注意不是通过PHP脚本)通过以下方法在远程计算机上手动打开notepad.exe:
cd "C:\Program Files\PSExec\" & psexec \\localhost -i 2 -ds "C:\Windows\System32\notepad.exe"
Run Code Online (Sandbox Code Playgroud)
哪个成功地工作但是这也没有通过PHP正常运行.目前,CMD和PSExec都不能自动在前台启动交互式应用程序.
打开命令提示符窗口并运行第一次cmd /?和第二次start /?并读取两次输出帮助。
cmd /C启动一个新的 Windows 命令进程,该进程会自动关闭,因为/C在命令进程终止时另外应用了要执行的命令。
该命令start "" /MAX /B使用空字符串作为窗口标题启动另一个命令进程,并在此命令进程中启动 GUI 应用程序Windows 记事本,该应用程序应以最大化窗口启动,但/MAX应在后台运行(= 没有可见窗口),因为/b。
因此,错误在于/b真正想要的使用方式是在具有最大化窗口的前台启动记事本,而不是在没有窗口的后台启动记事本。
并且 Windows 一定不能不可避免地安装在驱动器 C: 上名为 的目录中Windows。因此,最好使用这两个命令之一:
cmd.exe /C start "" /MAX "%SystemRoot%\System32\notepad.exe"
cmd.exe /C start "" /MAX "%windir%\System32\notepad.exe"
Run Code Online (Sandbox Code Playgroud)
环境变量windir是从Windows 95开始默认存在的环境变量,包含运行Windows的目录路径。
环境变量SystemRoot是基于 Windows NT 的所有 Windows 版本预定义的环境变量,具有 Windows 目录的路径。
现在最好使用,SystemRoot因为这个环境变量是Windows内置的,而windir只是在系统环境变量列表中预定义的,因此也可以删除。
请参阅有关Windows 环境变量的维基百科文章,获取预定义环境变量的列表及其说明。
| 归档时间: |
|
| 查看次数: |
1224 次 |
| 最近记录: |