启动远程桌面连接后 WebApp 变得无响应

WebApp becomes unresponsive after initiating Remote desktop Connection

创建批处理文件并调用mstc 执行远程桌面连接后,My 变得无响应。我原以为这是一个独立的过程,不以任何方式依赖于我的 python scrypt。

import os


def rdp_session(server, user, temporary_pass):
    """create Batch file to create .bat file that initiates rdp with variables"""
    rdp = open("rdp_test.bat", "w")
    rdp.write("cmdkey /generic:TERMSRV/"+server+" /user:"+user+" /pass:"+temporary_pass+"\n")
    rdp.write("mstsc /v:"+server+" /admin")
    rdp.close()
    os.system("rdp_test.bat")
    #os.remove("rdp_test.bat") optional, to delete file with creds after executing

我也试过使用:

subprocess.call("rdp_test.bat")
subprocess.Popen(["rdp_test.bat"])   #doesnt initiate my rdp

我得到了相同的结果。

为什么会发生这种情况,我该怎么做才能在我的 RDP 运行时保持响应?

为了添加一些上下文,我在 Flask 应用程序中有这个功能,我用它来远程连接到不同的机器。当 1 rdp 时,Web 应用程序不响应任何命令,当我终止我的 rdp 时,我单击的所有内容突然执行。

为了让您的会话继续,您需要生成另一个进程,独立于将在执行脚本后立即终止的进程。

在阅读了一些关于子流程的内容后,我设法发现 none 这些选项立即生效,因为我不仅需要 运行 一个带有 Popen 的子流程,而且还需要使用 Pathname expansion

我最后做了:

subprocess.Popen([os.path.expanduser("My_File.bat")])

expanduser will expand a pathname that uses ~ to represent the current user's home directory. This works on any platform where users have a home directory, like Windows, UNIX, and Mac OS X; it has no effect on Mac OS.

否则我的应用程序将在关闭我的 rdp 会话后 运行 所有后续命令。这允许我 运行 独立于我的网络应用程序的多个子进程,并允许它同时响应