我正在使用Windows 7(以会话1号登录),我的Jenkins CI在会话0中作为Windows服务运行。 我的问题是..我想在会话0中通过Jenkins CI打开一个Excel文件,但是想在会话1上显示它的GUI。
我知道会话0在Windows 7中被隔离,但是可以在会话0中运行进程然后在另一个会话中输出吗?请帮忙。
答案 0 :(得分:4)
修改强>
进行了一些试验和错误,但这最终对我有用(Windows 7 64位)。
psexec.exe
,但您可以提取所有内容。提取到Jenkins可访问的某个位置,最好在路径中没有空格。cmd
,右键单击cmd.exe
,然后选择Run as Administrator
。C:\path\to\psexec.exe -accepteula
并按Enter键。C:\path\to\psexec.exe -i 1 cmd
并按Enter键。 (如果看到命令提示符出现,一切正常,请立即关闭)C:\path\to\psexec.exe -accepteula && C:\path\to\psexec.exe -i 1 cmd /c start C:\PROGRA~2\MICROSO~1\path\to\excel.exe
其中:
C:\path\to
是psexec.exe
的完整路径,除非它在%path%
-i 1
是您要启动的会话ID。C:\PROGRA~2\MICROSO~1\path\to
是excel.exe
无空格的完整路径。由于大多数Office安装都将位于具有空格的路径下,例如" Program Files(x86),您必须找出短路径,或将其放置在没有空格的位置。excel.exe
置于%path%
之下且使用常规命令行是不够的。对那些关心的人的一点解释:
psexec
需要先安装服务。为此,它需要首次从提升的命令提示符运行。这是一次性安装步骤。psexec
正常工作,您需要接受EULA提示。这是按会话/用户完成的。因此,即使您在命令提示符下运行psexec -accepteula
,当Jenkins服务(在会话0中作为本地系统运行)尝试使用它时,它也没有帮助。因此,您必须将该命令与命令一起放入Jenkins作业中。从技术上讲,它只需要在那里一次,然后可以删除,但保持它在那里肯定不会受到伤害。 cmd /k
并从我的本地cmd提示符运行此命令进行调试。这就是让我意识到我无法找到逃离空间的方法(试过各种引用),所以不得不求助于短文件名。请注意,不需要短文件名,这只是为了转义空格。答案 1 :(得分:0)
不,不是 -
加上任何UI交互都要求您将Jenkins作为Java Web Start而不是服务运行,否则您无法与UI元素进行交互。