如何在Windows7上使用tscon?

如何在Windows7上使用tscon?

我需要在 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).

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

我做了一些研究,花了几个小时试图解决这个问题,但没有任何效果。Windows7 上没有打开屏幕保护程序。

我尝试运行两者,但没有任何帮助。

tscon.exe 0 /dest:console
tscon.exe 1 /dest:console

在 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.

在 Windows XP 上,tscon 返回

Could not connect sessionID 0 to sessionname console, Error code 7045
Error [7045]:The requested session access is denied.

我刚刚仔细检查了一下,tscon.exe 0 /dest:console在 Windows XP 上运行是否可以解决问题。无法理解 tscon 命令的输出。

有没有什么办法可以在我重启 Windows 机器后自动运行 RFT 脚本?最好不要让其他电脑参与。我甚至考虑使用旧的 Windows XP 进行远程桌面会话,以使 RFT 正常运行。我希望还有其他更好的解决方案。

答案1

在谈到你的主要问题之前,我想指出的是,你收到的信息

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

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

由于我的会话 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

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

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

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

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

答案2

此页面表明问题在于尝试通过计划任务运行系统时系统被锁定: http://www-01.ibm.com/support/docview.wss?uid=swg21304791

将系统设置为自动登录,禁用屏幕保护程序和自动锁定,看看是否有帮助。不要通过远程桌面连接到计算机 - 这将锁定控制台会话。安装 vnc 来登录或使用虚拟机软件提供的任何方法。事实上,关闭远程桌面,这样你就不会意外锁定系统。

要设置自动登录,请运行“control userpasswords2”

根据这个: http://support.microsoft.com/kb/302801 Tscon 实际上会在 Server 2003(可能还有)XP 中保持会话解锁状态。这是一个错误,可能已在较新的 Windows 版本中得到纠正。

相关内容