有没有办法在Windows Vista中以管理员身份运行ANT任务?

时间:2009-04-23 19:04:27

标签: java ant windows-vista

作为安装程序的一部分,我需要从ANT运行批处理文件。如果我以管理员身份运行cmd.exe并运行批处理文件,那么一切都很好,因为它具有相应的管理权限。当从ant执行批处理文件时,它会失败,就像我在没有管理权限的情况下运行批处理文件一样。我的问题是,如何从ANT脚本中以管理模式运行此批处理文件?

<exec executable="cmd.exe" output="dir.txt" dir="c:/bin/">
<arg line="/c service.bat install"/>
</exec>

5 个答案:

答案 0 :(得分:3)

至少XP有一个runas命令可以尝试使用,例如:

runas /u:%COMPUTERNAME%\Administrator "cmd /c service.bat install"

调用时,它会在控制台上要求输入密码。

更新:半年后,我已升级到Windows 7.此处,runas不能用于提升权限,但Aaron Margosis有解决方案:

// elevate.js -- runs target command line elevated
if (WScript.Arguments.Length >= 1) {
    Application = WScript.Arguments(0);
    Arguments = "";
    for (Index = 1; Index < WScript.Arguments.Length; Index += 1) {
        if (Index > 1) {
            Arguments += " ";
        }
        Arguments += WScript.Arguments(Index);
    }
    new ActiveXObject("Shell.Application").ShellExecute(Application, Arguments, "", "runas");
} else {
    WScript.Echo("Usage:");
    WScript.Echo("elevate Application Arguments");
}

如果需要,也许可以嵌入安装程序中。但是对于最终用户来说,Script Elevation Power Toys更加便利,正如另一个答案所示。

答案 1 :(得分:2)

您可以尝试Script Elevation PowerToy。它添加了一个提升命令,可用于提升命令行上的权限。

答案 2 :(得分:2)

我偶然发现了类似的问题。解决方案是使用PsExec作为可执行文件,并使用它来调用批处理文件。 PsExec是Windows的runas命令的强大替代品。

答案 3 :(得分:1)

关闭UAC似乎是允许执行此ant任务的唯一选项。

我尝试制作批处理文件的快捷方式并运行它,因为快捷方式可以设置为“以管理员身份运行”。我得到提示时没有运气,但我的批处理文件仍然失败。

[http://www.mydigitallife.info/2007/02/17/how-to-open-elevated-command-prompt-with-administrator-privileges-in-windows-vista/][1]

答案 4 :(得分:-2)

通过使用elevate命令提示符,我们可以执行此操作。

在Ant任务中我们可以使用exec任务来运行任何可执行文件。就像我们也可以使用exec命令提示符

<property name=”admincmd” value=”./elevate.cmd” />
<property name=”server.location” location=”c:/Apache/tomcat/bin” />

<exec executable=”${admincmd}” failonerror=”false”>
<arg value=”cmd” />
<arg value=”/k” />
<arg value=”${server.location}/service” />
<arg value=”install” />
</exec>

在上面的代码片段中,可以从这里下载elevate.cmd源

要正确运行此代码,我们需要将两个文件elevate.vbs,elevate.cmd放在同一目录中,并且应该在属性admincmd中定义的适当位置可用。

here是原帖

的参考链接