2009-04-23 11 views
7

インストーラの一環として、ANTからバッチファイルを実行する必要があります。 cmd.exeを管理者として実行し、バッチファイルを実行すると、適切な管理者権限を持つので、すべてがうまくいきます。バッチファイルがantから実行されると、管理特権なしでバッチファイルを実行するのと同じ方法で失敗します。私の質問は、どのようにANTスクリプトから管理モードでこのバッチファイルを実行できますか?Windows Vistaの管理者としてANTタスクを実行する方法はありますか?

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

呼び出された場合は、コンソールパスワードの入力を要求されます:

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

答えて

1

このAntタスクを実行できるようにするには、UACをオフにするオプションが唯一の選択肢のようです。

ショートカットは「管理者として実行」に設定できるので、バッチファイルのショートカットを作成して実行しようとしました。プロンプトが表示されても、私のバッチファイルはまだ失敗します。

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

3

は、少なくともXPのようなもの、あなたが使用しようとすることができrunasコマンドを持っています。

UPDATE:今年の半分は、後に、私はrunasコマンドは、特権の昇格のために使用することはできませんここでのWindows 7にアップグレードしたが、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はもっと便利です。

+0

おっとあり、質問はビスタについてでした。私の答えはXPだけに基づいている、私はそれがVistaに適用されるかわからない。 –

+2

Vistaでそれを試しました。うまくいきませんでした...提案に感謝します。他のアイデアは誰ですか? – Edward

+0

@Edward SysinternalsコマンドラインツールPsExecを試してください。 https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx – Jesse

2

あなたはScript Elevation PowerToyを試みることができます。コマンドラインで権限を昇格させるために使用できる昇格コマンドを追加します。

+0

インストーラの一環として、この電源玩具がマシンにインストールされていることを保証するものではありません。人生を少し楽にするために、この問題を自分のマシンで修正したい人にとって、それは素晴らしい提案です。ありがとう。 – Edward

+0

ああ、そうです。私はそれを考慮しなかった。実際には、Windowsは特定の名前のプログラムを管理者特権(たとえばsetup.exe)が必要なものとして扱う傾向があります...それはsetup.batに当てはまるのだろうかと思います。 – Powerlord

2

私は同様の問題に遭遇しました。解決策は、PsExecを実行可能ファイルとして使用し、バッチファイルを呼び出すために使用することでした。 PsExecは、Windowsのrunasコマンドの強力な代替品です。

-2

昇格コマンドプロンプトを使用すると、これを行うことができます。 Antタスクで

我々は、我々はまた、elevate.cmdソースはここからダウンロードすることができます上記のコードでは幹部の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> 

をコマンドプロンプトを使用することができます任意の実行file.Likeを実行するには、execタスクを使用することができます

このコードを正しく実行するには、2つのファイルelevate.vbs、elevate.cmdを同じディレクトリに配置する必要があり、プロパティadmincmdで定義されている適切な場所で使用できるようにする必要があります。

hereは、オリジナルのポストの参照リンク

関連する問題