我正在使用Windows 7(以会话1login),我的Jenkins CI在会话0中作为windows服务运行。我的问题是..我想通过会话0中的Jenkins CI打开一个Excel文件,但是想要在会话1上显示其GUI。
我知道会话0在Windows 7中是孤立的,但是可以在会话0中运行进程,然后在另一个会话中输出吗? 请帮忙。
编辑:
花了一些试验和错误,但这是最后为我工作(Windows 7 64位)。
psexec.exe
,但你可以提取一切。 提取到Jenkins可访问的某个位置,最好在路径中没有空格。 cmd
,右键单击cmd.exe
,选择Run as Administrator
。 C:\path\to\psexec.exe -accepteula
并按回车。 C:\path\to\psexec.exe -i 1 cmd
并按回车。 (如果你看到一个命令提示符出现,一切都很好,现在关闭它) 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)”,所以您必须找出短路径,或将其放置在没有空格的地方。 %path%
下运行excel.exe
并从常规命令行工作是不够的 。 对那些关心的人做一点解释:
psexec
需要先安装一个服务。 为此,需要首次使用提升的命令提示符运行。 这是一次性安装步骤。 psexec
正常工作,您需要接受EULA提示。 这是每个会话/用户完成的。 所以,即使在命令提示符下运行psexec -accepteula
,当Jenkins服务(以会话0中的本地系统运行)尝试使用它时,也不会psexec -accepteula
。 因此,你必须把这个放在Jenkins的工作中,连同命令。 从技术上讲,只需要在那里一次,之后就可以取下,但是保持在那里肯定不会有什么伤害。 cmd /k
并从我的本地cmd提示符运行此命令进行调试。 这让我意识到我无法找到逃避空间的方法(尝试过各种引用),所以不得不求助于简短的文件名。 请注意,短文件名不是必需的,这只是为了逃避空间。 不,这不对-
加上任何UI交互都需要运行Jenkins作为Java web开始而不是服务,或者你不能与UI元素交互。