比如一个启动服务的命令net start httpd
等像 linux 的 sudo 。
1
tcp 2016-05-25 08:20:34 +08:00 via iPhone
runas
|
2
cevincheung OP @tcp 要输密码。怎么能直接弹出 uac
|
3
tcp 2016-05-25 08:30:21 +08:00 via iPhone
@cevincheung 批处理的属性里面勾上 管理员权限
|
4
cevincheung OP |
5
mxalbert1996 2016-05-25 08:34:20 +08:00 via Android
@tcp 以管理员用户运行和以管理员权限运行是不一样的
如果楼主是想以管理员权限运行,那么这个问题用 bat 是无解的,但是可以用 PowerShell 脚本解决。 |
6
cevincheung OP @tcp 刚撸了一下,批处理 win10 没的兼容性选项。
|
7
tcp 2016-05-25 08:40:26 +08:00 via iPhone
powershell -c start -verb runas abc.exe
|
8
takwai 2016-05-25 09:24:04 +08:00
|
10
acess 2016-05-25 16:34:49 +08:00 1
关注
telnet 登录提权问题跟这个问题的核心差不多吧。 试了 psexec -h 参数, Win10 下无效。 (参考: http://forum.sysinternals.com/how-does-psexec-run-with-elevated-privileges_topic27580.html ) |
11
acess 2016-05-25 16:44:45 +08:00 1
如果勾选 psexec 属性里的“使用管理员身份运行”,-h 参数就有效了。这样使用时,每次调用 psexec 都会弹出 UAC 提示框。
|
12
mfaner 2016-05-26 02:14:13 +08:00
之前写的,用一个需要管理员权限的命令检测是否有权限,没有就写个 vbs , vbs 以管理员权限回来重新运行批处理脚本。
@echo off bcdedit >nul && goto main >%temp%\getadmin.vbs echo Set UAC = CreateObject^("Shell.Application"^) >>%temp%\getadmin.vbs echo UAC.ShellExecute "%~s0", "", "", "runas", 1 start wscript %temp%\getadmin.vbs exit /b :main bcdedit pause |