如何在 Windows7 上使用 tscon?

Rad*_*dek 13 windows-7 remote-desktop windows-terminal-services

我需要在 Windows7 虚拟机上使用 RFT 和 IE 运行夜间自动化测试。我发现在测试开始之前重新启动 Windows 框会有所帮助。

我正在将生产环境从 Windows XP 转移到 Windows 7。 RFT 曾经在运行 RFT 脚本时抱怨 CRFCN0557E: Activation failed when running under a Terminal Services environment. This may be caused by using a minimized terminal window - try playing back without minimizing the terminal window (it does not need to be full-screen).

tscon.exe 0 /dest:console在启动任何 RFT 脚本之前运行可修复 Windows XP 上的错误。但不是在 Windows7 上。

我做了一些研究,并尝试了几个小时来解决这个问题,但没有任何帮助。Windows7 上没有打开屏幕保护程序。

我试图同时运行两者,但没有任何帮助。

tscon.exe 0 /dest:console
tscon.exe 1 /dest:console
Run Code Online (Sandbox Code Playgroud)

在 Windows7 上 tscon 返回

{ErrorPrintf(): LoadString failed, Error 15105, (0x00003B01)}
Error [15105]:The resource loader cache doesn't have loaded MUI entry.
Error [0]:The operation completed successfully.
Run Code Online (Sandbox Code Playgroud)

在 Windows XP 上 tscon 返回

Could not connect sessionID 0 to sessionname console, Error code 7045
Error [7045]:The requested session access is denied.
Run Code Online (Sandbox Code Playgroud)

我只是仔细检查了tscon.exe 0 /dest:console在 Windows XP上运行是否解决了这个问题。那时无法理解 tscon 命令的输出。

知道如何在自动重新启动 Windows 框后运行 RFT 脚本吗?最好不涉及任何其他计算机。我什至想使用旧的 Windows XP 进行远程桌面会话,以使 RFT 满意。我希望有其他更好的解决方案。

Sta*_*ish 15

在我讨论您的主要问题之前,我想指出您收到消息的事实

{ErrorPrintf(): LoadString failed, Error 15105, (0x00003B01)}
Error [15105]:The resource loader cache doesn't have loaded MUI entry.
Run Code Online (Sandbox Code Playgroud)

表示您的系统上的某些内容已损坏。MUI 是多语言用户界面。有问题的 Windows 7 计算机是否设置为使用“英语(美国)”以外的语言?看起来 tscon 正在尝试以您配置的语言查找并显示错误消息,但它找不到它应该使用的语言文件。这可能是更大问题的征兆。您正在使用安装在该计算机上的 tscon.exe 而不是从另一台计算机复制的,对吗?

您可以通过sfc /scannow在拍摄快照后运行并查看 tscon 是否给出相同错误来更正此问题。

至于您的主要问题,您提供给 tscon 的数字表示要处理的会话 ID。您是否检查过您使用的是会话 0 还是会话 1?运行query user以查看您的会话 ID,然后使用该编号。

例如,我从query user我的一台服务器上获得此输出:

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>starfish              rdp-tcp#4           2  Active          .  9/20/2012 10:12 PM
Run Code Online (Sandbox Code Playgroud)

由于我的会话 ID 是 2,我运行tscon 2 /dest:console以将该会话发送到控制台。当我转到控制台并运行时,query user我看到以下内容:

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>starfish              console             2  Active          .  9/20/2012 10:12 PM
Run Code Online (Sandbox Code Playgroud)

我还在 Windows 7 Pro 桌面上进行了测试,结果相同。

如果以上命令成功,您可以将以下内容放入批处理文件并运行它以将当前会话发送到控制台。

for /f "skip=1 tokens=3 usebackq" %%s in (
  `query user %username%`
) do (
  %windir%\System32\tscon.exe %%s /dest:console
)
Run Code Online (Sandbox Code Playgroud)

它还应该消除重新启动计算机的需要,我怀疑这是为了确保您始终获得会话 ID 0。