Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows服务能否安装其他Windows服务?_Windows_Amazon Web Services_Service_Permissions_Teamcity - Fatal编程技术网

Windows服务能否安装其他Windows服务?

Windows服务能否安装其他Windows服务?,windows,amazon-web-services,service,permissions,teamcity,Windows,Amazon Web Services,Service,Permissions,Teamcity,当我有一个Windows服务尝试安装另一个Windows服务时遇到问题 具体来说,我有一个TeamCity代理在Windows2008AWS实例上为我运行测试。这些测试是用Java编写的,它通过.bat脚本安装一个服务(我们称之为服务a),每次都给它一个唯一的名称 有问题的行在.bat脚本中:sc create“%serviceName%”binPath=%binPath%DisplayName=“%servicedinname:=%”start=%serviceStartType%。我相信只要

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

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

有问题的行在.bat脚本中:
sc create“%serviceName%”binPath=%binPath%DisplayName=“%servicedinname:=%”start=%serviceStartType%
。我相信只要服务名称是唯一的,就应该工作

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

我曾尝试以LocalSystem、Administrator和administrators组成员的其他用户的身份运行TeamCity代理。我还尝试完全禁用UAC

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

测试的重点是安装和使用服务A,所以解决方法是不相关的-服务A必须作为一个黑箱操作


谢谢!

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


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

请尝试制作一个test.bat文件,其中使用要创建的服务名称的文本值,而不是使用%serviceName%等的环境变量。我怀疑您的Java进程可能与cmd shell的环境不同,因此实际执行的是不同的。否则,请se在.bat脚本末尾暂停,以便您可以实际看到打印出来的错误,以便我们可以评估真正的问题是什么。这是可能的,因此您需要更多的日志记录才能找到罪魁祸首。请在之前尝试echo,然后是命令的副本。如果TC未捕获该文件,您可以重定向到该文件。如果%binPath%中有空格,则我相信你需要在它周围加上双引号。谢谢@jon,giulio vian,harry johnston,你是对的:LocalSystem可以安装服务,即使不调整UAC;是我的环境被错误配置了。我想我是被固定住了,绝望了,对不起!