Есть ли способ заставить задачу ANT запускаться от имени администратора в Windows Vista? - PullRequest
7 голосов
/ 23 апреля 2009

Как часть установщика, мне нужно запустить командный файл из ANT. Если я запускаю cmd.exe от имени администратора и запускаю командный файл, все в порядке, поскольку он имеет соответствующие административные привилегии. Когда пакетный файл выполняется из ant, он завершается сбоем, так же, как если бы я запускал командный файл без прав администратора. У меня вопрос, как я могу запустить этот пакетный файл в административном режиме из моего сценария ANT?

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

Ответы [ 5 ]

3 голосов
/ 24 апреля 2009

По крайней мере, в XP есть команда runas, которую вы можете попробовать использовать, например:

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

При вызове запрашивает пароль на консоли.

ОБНОВЛЕНИЕ: через полгода я обновился до Windows 7. Здесь руны не могут быть использованы для повышения привилегий, но Аарон Маргозис имеет решение:

// 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 более удобен, как предполагает другой ответ.

2 голосов
/ 05 апреля 2011

Я наткнулся на похожую проблему. Решением было использование PsExec в качестве исполняемого файла и использование его для вызова командного файла. PsExec - мощная замена команды runas для Windows.

2 голосов
/ 04 мая 2009

Вы можете попробовать Script Elevation PowerToy . Он добавляет команду elevate, которую можно использовать для повышения привилегий в командной строке.

1 голос
/ 04 мая 2009

Выключение UAC, кажется, является единственным вариантом, позволяющим выполнить эту задачу муравья.

Я попытался создать ярлык для командного файла и запустить его, поскольку для ярлыков можно установить «запуск от имени администратора». Там тоже не повезло, так как я получаю приглашение, но мой пакетный файл все еще не работает.

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

0 голосов
/ 28 июня 2014

с помощью командной строки elevate мы можем сделать это.

В задаче Ant мы можем использовать задачу exec для запуска любого исполняемого файла. Как и в командной строке с exec tas

<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.

здесь ссылка на оригинальное сообщение

...