То есть я хочу, чтобы 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
}
Однако он ужасно хакерский, в основном потому, что не может вернуть статус завершения программы вызывающей стороне. Это огромная проблема, ИМО.