也就是说,我希望 runas 只有在它运行的程序退出后才退出。
/waitrunas.exe没有参数。我已经尝试了很多排列,start /wait但没有任何效果。
我必须使用,runas因为我需要提升程序的权限,所以我需要像这样启动它:
runas /user:administrator /savedcred /env update.exe
Run Code Online (Sandbox Code Playgroud)
update.exe我的程序在哪里。runas也从 Cygwin Bash 调用,使其更加复杂。
我在 Server 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
}
Run Code Online (Sandbox Code Playgroud)
但是,它非常糟糕,主要是因为它无法将程序的退出状态返回给调用者。这是一个巨大的问题,IMO。
RunAs 不会提升进程,而只是使用目标用户凭据运行进程。但这不会使用提升的令牌运行该进程。你想用鲁纳斯做的事是不可能的。
为此,您需要使用 PowerShell、VBScript 或从 Technet下载Elevation PowerToys 。
编辑:
例如,输入:
runas /user:<i>Workadmin</i> cmd
Run Code Online (Sandbox Code Playgroud)
然后运行fsutils,需要管理员权限;拒绝访问。
或者尝试:
runas /user:<i>workadmin</i> "mmc.exe gpedit.msc"
Run Code Online (Sandbox Code Playgroud)
拒绝访问。
我很惊讶您没有注意到这一点,因为它在运行脚本时会导致各种问题。如果脚本启动其他需要提升权限的脚本,那么它就会中断。这也是 VBScript 和 PowerShell 脚本的问题。
| 归档时间: |
|
| 查看次数: |
6155 次 |
| 最近记录: |