42

如何从另一个具有管理员权限的批处理文件运行批处理文件?

我试过RUNAS命令,但它需要管理员密码。

我正在寻找通过右键单击批处理文件并以管理员身份运行的替代方法。我想从另一个批处理文件中自动化它。

4

9 回答 9

33

将每一行放入 cmd 或批处理文件中的所有主题:

@echo off

if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)

"Put your command here"

这对我来说可以。

于 2018-07-23T05:34:54.507 回答
26

On Windows 7:

  1. Create a shortcut to that batch file

  2. Right click on that shortcut file and choose Properties

  3. Click the Advanced button to find a checkbox for running as administrator

Check the screenshot below

Screenshot

于 2015-02-10T14:24:26.217 回答
15

您可以使用PowerShell从以下位置以管理员身份运行 b.bat a.bat

set mydir=%~dp0

Powershell -Command "& { Start-Process \"%mydir%b.bat\" -verb RunAs}"

它将通过确认对话框提示用户。用户选择YES,然后b.bat将以管理员身份运行。

于 2014-12-15T07:40:39.127 回答
12

利用

runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd

它只会在第一次询问密码。它不会再次询问密码,除非更改密码等。

于 2013-09-12T04:54:23.313 回答
3

如果您尝试调用 Windows UAC提示符(使整个屏幕变黑并询问您是否为以下任务授予管理员权限的提示符),RUNAS 并不是最流畅的方法,因为:

  1. 即使以管理员身份登录,您也不会收到 UAC 授权提示
  2. RUNAS 期望您拥有管理员密码,即使您的用户被设置为本地管理员,在这种情况下,以前的密码不是一种可靠的安全做法,特别是在工作环境中。

相反,请尝试复制并粘贴以下代码,以确保您的批处理文件以管理员权限运行:

@echo off

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

if '%errorlevel%' NEQ '0' (
    echo Requesting Admin access...
    goto goUAC )
    else goto goADMIN

:goUAC
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:goADMIN
    pushd "%CD%"
    CD /D "%~dp0"

rem --- FROM HERE PASTE YOUR ADMIN-ENABLED BATCH SCRIPT ---
echo Stopping some Microsoft Service...
net stop sqlserveragent
rem --- END OF BATCH ----

此解决方案在启用 UAC 的 Windows 7、8.1 和 10 设置下 100% 有效。

于 2014-10-31T14:26:27.527 回答
2

Runas.exe 在这里不起作用。您可以使用 VBScript 来调用“以管理员身份运行”shell 动词。Elevation Powertoys 包含一个批处理文件,允许您调用提升的命令:

elevatecmd.exe

http://blogs.technet.com/b/elevationpowertoys/

于 2014-01-24T06:54:48.067 回答
1

CMD本身没有以管理员身份运行文件的功能,但是powershell有,并且该powershell功能可以通过CMD用一定的命令来执行。将其写入命令提示符以运行您指定为管理员的文件。

powershell -command start-process -file yourfilename -verb runas

希望它有所帮助!

于 2021-01-01T04:44:44.207 回答
0

我发现有效的完整解决方案是:

@echo off
cd /D "%~dp0"
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
"Put your command here"

归功于: https ://stackoverflow.com/a/51472107/15087068

https://serverfault.com/a/95696

于 2021-02-26T11:43:11.517 回答
-1

如果有人希望他们可以在批处理文件中尝试,我会使用这个技巧。这将在您运行批处理文件时为您提供管理员提示

@echo off
cd \ && cd windows/system32 && command which needs admin credentials
pause
于 2018-04-25T11:29:50.807 回答