当我在
Windows上时,我使用
PsExec在其他Windows机器上启动进程.我现在有一个案例,我想从Linux机器上做到这一点.
幸运的是有一个小程序,它应该像PsExec一样工作,只适用于Linux-World.我没有安装它的问题,我能够启动像cmd.exe这样的进程.
问题是我无法启动Windows用户可见的进程.如果我启动calc.exe,我可以看到它是在任务管理器中启动的,但是没有GUI.
题:
如何启动Windows机器上实际可见的进程?
解决方法
How is it possible to start processes that are actually visible on the
Windows machine?
一个好的开始是在当前登录用户的会话中创建进程.如果只有一个人登录,那通常是会话1.如果有多个人登录,则可能是会话2或3或27.您必须首先在wtsapi32.dll中运行代码,以查找谁连接到哪个会话.在Windows的现代版本中,会话0保留用于服务和系统功能.
您正在会话0中启动进程,因此没有人可以看到它.
psexec可以启动一个远程进程,让你选择一个不同的会话来启动它,但我不知道任何Linux等价物.我查看了winexe的手册页,它似乎没有那个选项.
编辑:微软的官方立场是远程启动交互式进程是一个太大的安全风险,因此他们会阻止你这样做……但如果我们愿意变脏,我们仍然可以解决它:
schtasks.exe /create /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONSTART /TN "RemoteProcess" /TR "program.exe \"argument 1\" \"argument 2\"" schtasks.exe /Run /S COMPUTERNAME /I /TN "RemoteProcess" schtasks.exe /Delete /S COMPUTERNAME /TN "RemoteProcess"