以管理员身份自动运行批处理文件

时间:2013-09-12 04:48:29

标签: batch-file

如何从具有管理员权限的其他批处理文件运行批处理文件?

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

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

11 个答案:

答案 0 :(得分:21)

在Windows 7上:

  1. 创建该批处理文件的快捷方式

  2. 右键单击该快捷方式文件,然后选择属性

  3. 点击Advanced按钮,找到以管理员身份运行的复选框

  4. 查看下面的屏幕截图

    Screenshot

答案 1 :(得分:12)

使用

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

它将仅在第一次要求输入密码。除非更改密码等,否则不会再次要求输入密码

答案 2 :(得分:12)

您可以使用PowerShella.bat以管理员身份运行b.bat:

set mydir=%~dp0

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

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

答案 3 :(得分:9)

将每行以cmd或主题的全部内容放入批处理文件中:

@echo off

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

"Put your command here"

对我来说很好。

答案 4 :(得分:1)

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

elevate cmd.exe

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

答案 5 :(得分:1)

如果您正在尝试调用Windows UAC提示(将整个屏幕置为黑色,并询问您是否授予以下任务的管理员权限),则RUNAS不是最简单的方法,因为:

  1. 即使以管理员身份登录,您也不会收到提示进行UAC授权的提示
  2. RUNAS希望您拥有管理员密码,即使您的用户设置为本地管理员,在这种情况下,以前的密码不是一种合理的安全措施,特别是在工作环境中。
  3. 相反,请尝试复制&粘贴以下代码以确保批处理文件以管理员权限运行:

    @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%正常工作。

答案 6 :(得分:1)

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

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

希望有帮助!

答案 7 :(得分:0)

以下命令可以通过替换bat文件名保存为bat文件,并且可以按顺序运行以使用提升运行bat脚本。以下命令适用于Windows 7 64位。

"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -windowstyle hidden -nologo -noprofile -executionpolicy bypass -command "start-process -verb 'runas' -filepath BATCHFILENAME.BAT

答案 8 :(得分: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

答案 9 :(得分:-1)

这是我用过的一个技巧,如果有人想要他们可以在批处理文件中尝试这个。这将在运行批处理文件时为您提供管理员提示

@echo off
cd \ && cd windows/system32 && command which needs admin credentials
pause

答案 10 :(得分:-11)

我通过降低Windows用户身份验证(UAC)来运行批处理文件。它对我有用。