Windows批处理文件启动具有提升权限的另一批

时间:2017-04-07 08:52:24

标签: windows batch-file

我希望我的批处理文件启动另一个具有提升(管理员)权限的批处理文件,而不必接受提示。 我有一个具有管理员权限的用户(称为"用户"),但如果我尝试:

runas /savecred /user:user "program.bat"

权利不会升高。 但如果我尝试:

runas /savecred /user:administrator "program.bat"

并输入" user"的密码它说:未知的用户或错误的密码短语。

所以:我只需要使用" user" -account来提升权利?

1 个答案:

答案 0 :(得分:0)

这可能有点矫枉过正,但如果第二批文件应该始终以管理员身份运行,您可以在开头粘贴以下代码:

@echo off & setlocal EnableDelayedExpansion
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
    >NUL 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
    >NUL 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
IF '%errorlevel%' NEQ '0' (
    echo Asking for administrative rights
    goto uac
) ELSE ( goto adm )
:uac
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\uac.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\uac.vbs"
"%temp%\uac.vbs"
del "%temp%\uac.vbs"
cls
echo Did not get administrative rights
exit
:adm
pushd "%CD%"
CD /D "%~dp0"
cls
echo Got administrative rights

::
:: YOUR CODE HERE
::

编辑:当您禁用UAC时,它不会显示提示并授予您管理员权限。