gpt4 book ai didi

windows - Windows 服务可以安装另一个 Windows 服务吗?

转载 作者:可可西里 更新时间:2023-11-01 10:21:49 32 4
gpt4 key购买 nike

当我让一个 Windows 服务尝试安装另一个 Windows 服务时遇到问题。

具体来说,我有一个 TeamCity 代理在 Windows 2008 AWS 实例上为我运行测试。这些测试是用 Java 编写的,它会输出一个 .bat 脚本来安装一个服务(我们称之为服务 A),每次都给它一个唯一的名称。

违规行在 .bat 脚本中:sc create "%serviceName%"binPath= %binPath% DisplayName= "%serviceDisplayName:"=%"start= %serviceStartType%。我相信只要服务名称是唯一的就应该可以工作。

如果我使用管理员帐户在命令行上手动运行测试,它确实有效。安装服务A,测试完成,最后卸载服务A。

我尝试以本地系统、管理员和管理员组成员的另一个用户身份运行 TeamCity 代理。我也试过完全禁用 UAC。

推测问题是拒绝访问类型错误,尽管目前尚不清楚。还有一些途径可以探索,但这确实是一个简单的问题:作为服务运行的进程是否禁止安装其他服务?我是否需要做一些特殊的事情来配置机器/帐户以允许它执行此操作?

测试的重点是安装和使用服务 A,因此解决方法不相关 - 服务 A 必须作为黑盒运行。

谢谢!

最佳答案

只要进程具有适当的权限,创建服务就如何创建进程可以执行没有限制。也就是说,一个进程可以作为服务运行并创建另一个服务——这里唯一要考虑的是适当的权限级别。

从进程内运行批处理脚本(而不是直接通过命令行上的用户输入)经常出现的问题是预期的环境并不总是加载的环境。在这种情况下,批处理脚本中引用的环境变量似乎在作为服务运行时未正确设置,这当然会导致服务安装失败。纠正批处理脚本脱壳时加载的环境是这里的正确解决方案。

关于windows - Windows 服务可以安装另一个 Windows 服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26913545/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com