Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Apache Ant-启动/停止win服务-访问被拒绝_Ant_Uac - Fatal编程技术网

Apache Ant-启动/停止win服务-访问被拒绝

Apache Ant-启动/停止win服务-访问被拒绝,ant,uac,Ant,Uac,我有一个ApacheAnt文件(build.xml),它被设置为创建生产服务器的自动备份。它设置为停止Apache服务器和MSSQLS2000—备份所有内容并再次启动这两个服务(及其依赖项)。它在旧的WIN 2008服务器下工作正常,但在WIN8下工作不正常。当执行.bat文件来运行Ant进程时,它会打开CMD(正如它应该打开的那样),但停止/启动操作都不会正确执行。我收到“访问被拒绝”的回复 这是执行.bat(Ant)文件时的CMD输出: assemble: stop.server.apac

我有一个ApacheAnt文件(build.xml),它被设置为创建生产服务器的自动备份。它设置为停止Apache服务器和MSSQLS2000—备份所有内容并再次启动这两个服务(及其依赖项)。它在旧的WIN 2008服务器下工作正常,但在WIN8下工作不正常。当执行.bat文件来运行Ant进程时,它会打开CMD(正如它应该打开的那样),但停止/启动操作都不会正确执行。我收到“访问被拒绝”的回复

这是执行.bat(Ant)文件时的CMD输出:

assemble:

stop.server.apache:
     [exec] System error 5 has occurred.
     [exec]
     [exec] Access is denied.
     [exec]
     [exec] Result: 2

stop.server.ms-sql:
     [exec] No valid response was provided.
     [exec] The following services are dependent on the MSSQLSERVER service.
     [exec] Stopping the MSSQLSERVER service will also stop these services.
     [exec]
     [exec]    SQLSERVERAGENT
     [exec]
     [exec] Do you want to continue this operation? (Y/N) [N]:
     [exec] Result: -1
     [exec] System error 5 has occurred.
     [exec]
     [exec] Access is denied.
     [exec]
     [exec] Result: 2
负责启动/停止服务的实际build.xml部分如下所示:

。。。。。。。代码的开头

<macrodef name="service">
    <attribute name="service"/>
    <attribute name="action"/>
    <sequential>
        <exec executable="cmd.exe">
            <arg line="/c net @{action} '@{service}'"/>
        </exec>
     </sequential>
</macrodef>

<target name="start.server.ms-sql">
    <service action="start" service="MSSQLSERVER"/>
    <service action="start" service="SQLSERVERAGENT"/>
</target>

<target name="stop.server.ms-sql">
    <service action="stop" service="SQLSERVERAGENT"/>
    <service action="stop" service="MSSQLSERVER"/>      
</target>

<target name="start.server.apache">
    <service action="start" service="Apache2.2"/>
</target>

<target name="stop.server.apache">
    <service action="stop" service="Apache2.2"/>
</target>

但我找不到任何关于使用提升权限停止/启动服务的信息

有什么想法吗


注意:Apache2.2和MSSQL是从驱动器W:\运行的,而Win操作系统是从C:\运行的。我的Ant路径设置正确,但我认为这可能导致特权访问问题。

此错误与Ant无关(直接)。Windows8(实际上也是WindowsVista和Windows7)有UAC。即使用户使用管理帐户登录,也无法启动服务。您将让我们以管理员身份运行
。通常,这是可用的右键单击菜单

要使脚本具有相同的功能,可以禁用UAC。(这是电话号码 ).Windows 8可能会提供类似的说明


关于这个问题的一些详细讨论,可能对您有用:

所以。。。24小时后,我找到了解决方案。 显然,此行为(访问被拒绝以停止/启动任何win服务,并且随后发生了系统错误5示例)是所有较新win操作系统的固有行为。正如我所发现的,在执行.bat文件时,似乎没有直接从CMD提升用户权限的直接方法,因此随后的每个命令(即停止或启动服务)都将由于缺乏用户权限而失败

我的解决方案

1) 下载(这只是一个可执行文件,它创建了一个包含多个文件的文件夹“立面”)

2) 在新创建的“提升”文件夹中,双击installpowertoys.cmd文件(这实际上为您安装了额外的选项,让您可以在cmd中使用“提升”一词,以管理员身份直接运行任何.bat文件(不会被win窃听)

3) 转到控制面板->用户帐户->更改用户帐户控制设置->。将滑块一直向下移动到“从不通知”级别。(这可确保“以管理员身份运行”弹出框被抑制)

4) 创建一个包装器.bat文件,该文件将以提升的权限执行,即这是一个bat文件,我称之为backup.bat,其内容如下(注意,本例中我的网站文件夹位于W:\drive上):

5) 创建另一个.bat文件,实际使用ApacheAnt调用bild.xml文件(包括所有详细信息-哪些服务应该停止或启动,我的文件应该压缩和备份在哪里,等等)。此文件可称为antbackup.bat

ant -buildfile w:\mywebsite\build.xml antbackup
pause
6) 双击backup.bat文件(当然,让您的计划任务完成,交叉手指,希望有好的结果:)


这对我很有效。它也可以帮助其他人。

谢谢你的回答。第一个建议-UAC-我已经设置为最小值(不通知),第二个建议-我昨天已经尝试了另一个帖子的链接,但我无法让它工作。但我认为你的做法是正确的,Win8似乎不允许启动这些服务。一定有另一个窗户的地方。还可能是什么?
ant -buildfile w:\mywebsite\build.xml antbackup
pause