服务可以产生登录会话吗?构建服务器问题

Dav*_*idN 6 windows testing service build-server

要在我的构建服务器上运行一些验收测试,我需要始终打开一个登录的用户会话(白色测试框架需要有一个“屏幕”来测试 WPF UI)。这显然是一个脆弱的设置,它在我们的过程中引入了相当多的摩擦。

是否有可能在后台运行一个 Windows 服务,然后它可以“生成”一个以用户身份登录的会话,做一些工作(在这种情况下是测试),然后注销?或者有没有比我们现在正在做的更好的方法来处理我的情况?令人沮丧的是,例如,如果应用程序在某个时刻崩溃,则会弹出异常对话框,冻结我们的构建服务器。我想禁用 wastson 博士来处理这个问题,但我有一种感觉,我正在走一条充满危险的道路。

son*_*i2f 5

首先,有关您的环境的更多详细信息会有所帮助。我假设它是 Windows 2003 或 Windows 2008 Server。

说实话,我不是这方面的专家,但谁用这个盒子呢?如果您对盒子具有管理员权限,则可以使用 psexec(如果您还没有听说过它,它是一个免费的 Sysinternals 实用程序)。您可以让它在控制台会话中启动一个进程(用 psexec 的说法是交互式桌面)。如果您在具有正确注册表设置的框中自动登录,则在安全设置被诅咒的情况下,您可以让 PsExec 执行此操作。注册表项包括以明文形式存储密码,因此我会锁定这样的帐户。

PsExec 在远程系统上执行程序,其中远程执行的控制台应用程序以交互方式执行。

Usage: psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]

. . .

     -d         Don't wait for process to terminate (non-interactive).
     -i         Run the program so that it interacts with the desktop of the
Run Code Online (Sandbox Code Playgroud)

因此,对于它的价值,我想您可以启动一个会话,然后有一个计划任务批处理脚本,用于查找登录的用户,然后执行以下操作,如果您这样做,则使用给定的会话或交互式桌面启动进程不指定,它也不会等待进程退出。它只会产生它。

 %SYSTEMDRIVE%\path\to\psexec.exe -i -d C:\path\to\your\app.exe
Run Code Online (Sandbox Code Playgroud)

现在,如果您拥有 Windows Server 产品之一,我认为您可以偶尔使用 RDP (mstsc.exe) 使用console参数(现在是adminWindows 2008 中的参数)登录。

再说一次,这是一个菜鸟的漫谈。我可能会因为这项工作而偏离基础。知识渊博的人可以提供帮助。