如果没有用户登录,则无法通过Jenkins运行COM应用程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果没有用户登录,则无法通过Jenkins运行COM应用程序相关的知识,希望对你有一定的参考价值。
我在Windows 10计算机上运行Jenkins服务器作为服务。在其中一个Jenkins-jobs中,我必须使用COM应用程序执行测试。开发人员在RDP的日常工作中也使用同一台计算机,并且当没有常规开发人员使用它时,Jenkins-job工作在晚上运行。但是,如果没有用户登录计算机或使用RDP,则作业中的脚本无法使用以下消息启动COM应用程序:
无法启动服务器进程,因为配置的标识不正确。检查用户名和密码。
我发现问题似乎是COM应用程序的标识取自当前的交互式用户,如果没有,则失败,请参阅
我似乎无法解决我的问题。我看到两个选择:
- 执行作业时,请确保用户已登录
- 了解如何在没有交互式用户的情况下运行COM应用程序
对于1我看到以下解决方案以及它们不起作用的原因:
- Windows上的自动登录启动,并保持登录状态:由于我们在日常工作中使用计算机通过RDP,因此无法正常工作,这意味着本地登录用户将被踢出,因为我们一次只允许一个会话。
- 使用RDP登录,然后使用脚本
tscon.exe 0 /dest:console
退出,这将使会话保持打开状态。由于我们在团队中使用该机器的人数超过RDP,因此无法工作,人们将忘记在当天结束时使用此命令。
对于2,我无法找到这样做的方法。
我可以在Windows中安排用户在作业开始前自动登录吗?在作业执行之前,我可以使用第二台计算机并为第一台计算机安排RDP会话吗?
答案
由于没有人能够提供一个好的解决方案,我会输入我的workardound作为答案和可能的解决方案。我最终做的是使用第二台计算机(运行Windows)并在该计算机上安排一项任务,每晚(在Jenkins工作开始之前)打开一个RDP会话到运行Jenkins的计算机。通过这种方式,Jenkins作业和COM应用程序具有可以使用的活动用户。
这就是我实现这个目标的方式:
- 登录到第二台计算机(即未运行Jenkins的计算机)并打开RDP(远程桌面连接)对话框,然后单击“显示选项”
- 输入第一台计算机(即运行Jenkins的计算机)的详细信息。确保取消选中始终要求凭据(您需要保存凭据才能自动执行此操作)。
- 使用另存为将配置保存到.rdp文件...
- 重要提示:按连接键连接第一台计算机,输入密码并确保保存。也接受任何证书e.t.c.防止未来的警告/对话。
- 创建包含以下内容的bat文件
mstsc C:PathTosaved_rdp_file.rdp
- 在Windows Scheduler中创建一个任务,每晚调用在步骤5中创建的bat文件。
- 可选:如果要在Jenkins完成时关闭rdp-session,请创建第二个bats-script和scedule,其中包含:
tasklist /FI "imagename eq mstsc.exe" | find "mstsc.exe" && taskkill /f /im mstsc.exe || echo process "mstsc.exe" is not running
以上是关于如果没有用户登录,则无法通过Jenkins运行COM应用程序的主要内容,如果未能解决你的问题,请参考以下文章