То есть я хочу, чтобы runas выходил только после того, как запускается запущенная программа.
Для runas.exe отсутствует аргумент /wait . Я пробовал много перестановок start /wait с ним, и ничего не работает.
Я должен использовать runas потому что мне нужны повышенные привилегии для программы, поэтому мне нужно запустить ее так:
runas /user:administrator /savedcred /env update.exe
где update.exe - моя программа. runas вызывается из Cygwin Bash, чтобы сделать его еще более сложным.
Я на сервере 2008 R2.
Ну, это один из способов ее решения. Он использует программу Sysinternals pslist и Bash:
do_update()
{
if test -d c:/; then
case `hostname` in
thor*)
update="runas /user:administrator /savedcred /env \".\\update.exe\""
;;
*) update="./update.exe" ;;
esac
$update
while pslist -e update > /dev/null 2>&1; do
echo waiting for update.exe to finish...
sleep 3
done
else
./update.sh
fi
}
Однако он ужасно хакерский, в основном потому, что не может вернуть статус завершения программы вызывающей стороне. Это огромная проблема, ИМО.
