[GH-ISSUE #662] 希望增强断开远程桌面的时候,不关闭远程UI的功能。 #541

Closed
opened 2026-02-26 11:58:42 +03:00 by kerem · 8 comments
Owner

Originally created by @skyformat99 on GitHub (May 13, 2024).
Original GitHub issue: https://github.com/1Remote/1Remote/issues/662

Originally assigned to: @VShawn on GitHub.

自动化测试的时候,会使用各种python脚本操作鼠标,键盘等等,进行测试工作;
一般会通过rdp登录远程服务器,在服务器上运行 python脚本测试。

这个时候,如果直接断开 1remote,则远端的python脚本不会正确执行了。

原因就是:
https://learn.microsoft.com/zh-cn/azure/devops/pipelines/test/ui-testing-considerations?view=azure-devops&tabs=mstest

如果使用远程桌面访问以自动登录方式运行代理的计算机,则直接断开连接远程桌面会导致计算机锁定,并且在此代理上运行的任何 UI 测试都可能会失败。 为避免故障,请在远程计算机上使用 tscon 命令从远程桌面断开连接。

或者,若要自动查找当前会话 ID,请创建一个包含以下代码的批处理文件:

batch

复制
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)

也可以参考这个方法:
https://blog.csdn.net/qq_51038274/article/details/122223669

总之,希望作者可以集成这个功能,断开的时候,仍然让服务器可以正常执行UI相关的python脚本等功能。

Originally created by @skyformat99 on GitHub (May 13, 2024). Original GitHub issue: https://github.com/1Remote/1Remote/issues/662 Originally assigned to: @VShawn on GitHub. 自动化测试的时候,会使用各种python脚本操作鼠标,键盘等等,进行测试工作; 一般会通过rdp登录远程服务器,在服务器上运行 python脚本测试。 这个时候,如果直接断开 1remote,则远端的python脚本不会正确执行了。 原因就是: https://learn.microsoft.com/zh-cn/azure/devops/pipelines/test/ui-testing-considerations?view=azure-devops&tabs=mstest 如果使用远程桌面访问以自动登录方式运行代理的计算机,则直接断开连接远程桌面会导致计算机锁定,并且在此代理上运行的任何 UI 测试都可能会失败。 为避免故障,请在远程计算机上使用 [tscon](https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/tscon) 命令从远程桌面断开连接。 或者,若要自动查找当前会话 ID,请创建一个包含以下代码的批处理文件: batch 复制 for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( %windir%\System32\tscon.exe %%s /dest:console ) 也可以参考这个方法: https://blog.csdn.net/qq_51038274/article/details/122223669 总之,希望作者可以集成这个功能,断开的时候,仍然让服务器可以正常执行UI相关的python脚本等功能。
kerem 2026-02-26 11:58:42 +03:00
Author
Owner

@VShawn commented on GitHub (May 18, 2024):

这种使用场景,是不是用VNC会比较好? VNC 断开后不会锁定UI。

没必要为了特例需求在RDP上实现这种workaround.

<!-- gh-comment-id:2118543653 --> @VShawn commented on GitHub (May 18, 2024): 这种使用场景,是不是用VNC会比较好? VNC 断开后不会锁定UI。 没必要为了特例需求在RDP上实现这种workaround.
Author
Owner

@skyformat99 commented on GitHub (May 20, 2024):

这种使用场景,是不是用VNC会比较好? VNC 断开后不会锁定UI。

没必要为了特例需求在RDP上实现这种workaround.

不是吧,这个需求非常普遍啊。
大家远程不得需要干活么? 干活搞自动测试很多啊。。。。

<!-- gh-comment-id:2119867494 --> @skyformat99 commented on GitHub (May 20, 2024): > 这种使用场景,是不是用VNC会比较好? VNC 断开后不会锁定UI。 > > 没必要为了特例需求在RDP上实现这种workaround. 不是吧,这个需求非常普遍啊。 大家远程不得需要干活么? 干活搞自动测试很多啊。。。。
Author
Owner

@skyformat99 commented on GitHub (May 20, 2024):

这种使用场景,是不是用VNC会比较好? VNC 断开后不会锁定UI。

没必要为了特例需求在RDP上实现这种workaround.

不是吧,这个需求非常普遍啊。
大家远程不得需要干活么? 干活搞自动测试很多啊。。。。

<!-- gh-comment-id:2119868655 --> @skyformat99 commented on GitHub (May 20, 2024): > 这种使用场景,是不是用VNC会比较好? VNC 断开后不会锁定UI。 > > 没必要为了特例需求在RDP上实现这种workaround. 不是吧,这个需求非常普遍啊。 大家远程不得需要干活么? 干活搞自动测试很多啊。。。。
Author
Owner

@VShawn commented on GitHub (May 20, 2024):

我见到的自动测试,不是用RDP的,而是用一种群控工具,所有虚拟机的鼠标键盘全部同步,本地脚本控制鼠标移动点击一次等于所有虚拟机都点击了一次。还有自动分析工具,自动截图,聚类分析所有虚拟机的UI截图,高亮标记显示效果离群的,加入报警日志保留。

真没听说哪家用远程桌面来做UI测试的。

<!-- gh-comment-id:2119899987 --> @VShawn commented on GitHub (May 20, 2024): 我见到的自动测试,不是用RDP的,而是用一种群控工具,所有虚拟机的鼠标键盘全部同步,本地脚本控制鼠标移动点击一次等于所有虚拟机都点击了一次。还有自动分析工具,自动截图,聚类分析所有虚拟机的UI截图,高亮标记显示效果离群的,加入报警日志保留。 真没听说哪家用远程桌面来做UI测试的。
Author
Owner

@skyformat99 commented on GitHub (May 20, 2024):

我见到的自动测试,不是用RDP的,而是用一种群控工具,所有虚拟机的鼠标键盘全部同步,本地脚本控制鼠标移动点击一次等于所有虚拟机都点击了一次。还有自动分析工具,自动截图,聚类分析所有虚拟机的UI截图,高亮标记显示效果离群的,加入报警日志保留。

真没听说哪家用远程桌面来做UI测试的。

做个选项也行吧?
有的人需要这个,有的人不需要这个
有用就行

<!-- gh-comment-id:2120161130 --> @skyformat99 commented on GitHub (May 20, 2024): > 我见到的自动测试,不是用RDP的,而是用一种群控工具,所有虚拟机的鼠标键盘全部同步,本地脚本控制鼠标移动点击一次等于所有虚拟机都点击了一次。还有自动分析工具,自动截图,聚类分析所有虚拟机的UI截图,高亮标记显示效果离群的,加入报警日志保留。 > > 真没听说哪家用远程桌面来做UI测试的。 做个选项也行吧? 有的人需要这个,有的人不需要这个 有用就行
Author
Owner

@VShawn commented on GitHub (May 20, 2024):

首先这个功能看上去就没几个人需要(至少项目启动4年了,你是第一个提的)

其次

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)

这个代码看上去会把所有 mstsc 都关闭,无法控制单独关闭某一个。

<!-- gh-comment-id:2120340491 --> @VShawn commented on GitHub (May 20, 2024): 首先这个功能看上去就没几个人需要(至少项目启动4年了,你是第一个提的) 其次 for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( %windir%\System32\tscon.exe %%s /dest:console ) 这个代码看上去会把所有 mstsc 都关闭,无法控制单独关闭某一个。
Author
Owner

@skyformat99 commented on GitHub (May 21, 2024):

首先这个功能看上去就没几个人需要(至少项目启动4年了,你是第一个提的)

其次

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( %windir%\System32\tscon.exe %%s /dest:console )

这个代码看上去会把所有 mstsc 都关闭,无法控制单独关闭某一个。

这个是在目标机器上运行的,把目标机器上的各远程关闭。
不会关闭本软件。

作为选项,总归有用。要不然微软也不会特别发文章提这个方法。

或者你告诉我怎么改,在哪个代码里面改,

<!-- gh-comment-id:2121526847 --> @skyformat99 commented on GitHub (May 21, 2024): > 首先这个功能看上去就没几个人需要(至少项目启动4年了,你是第一个提的) > > 其次 > > for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( %windir%\System32\tscon.exe %%s /dest:console ) > > 这个代码看上去会把所有 mstsc 都关闭,无法控制单独关闭某一个。 这个是在目标机器上运行的,把目标机器上的各远程关闭。 不会关闭本软件。 作为选项,总归有用。要不然微软也不会特别发文章提这个方法。 或者你告诉我怎么改,在哪个代码里面改,
Author
Owner

@VShawn commented on GitHub (May 22, 2024):

可能是我对这个使用场景实在不太理解吧。

如果你想自己加的话,可以在这里改,把 colse 改成运行脚本就行了。

https://github.com/1Remote/1Remote/blob/main/Ui/Service/SessionControlService.cs#L322-L346

<!-- gh-comment-id:2124625484 --> @VShawn commented on GitHub (May 22, 2024): 可能是我对这个使用场景实在不太理解吧。 如果你想自己加的话,可以在这里改,把 colse 改成运行脚本就行了。 https://github.com/1Remote/1Remote/blob/main/Ui/Service/SessionControlService.cs#L322-L346
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/1Remote#541
No description provided.