如何从具有管理员权限的其他批处理文件运行批处理文件?
我尝试了RUNAS命令,但它需要管理员密码。
我正在搜索运行批处理文件的替代方法,方法是右键单击并以管理员身份运行。我想从另一个批处理文件中自动化它。
答案 0 :(得分:21)
在Windows 7上:
创建该批处理文件的快捷方式
右键单击该快捷方式文件,然后选择属性
点击Advanced
按钮,找到以管理员身份运行的复选框
查看下面的屏幕截图
答案 1 :(得分:12)
使用
runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd
它将仅在第一次要求输入密码。除非更改密码等,否则不会再次要求输入密码
答案 2 :(得分:12)
您可以使用PowerShell从a.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
答案 5 :(得分:1)
如果您正在尝试调用Windows UAC提示(将整个屏幕置为黑色,并询问您是否授予以下任务的管理员权限),则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%正常工作。
答案 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"
答案 9 :(得分:-1)
这是我用过的一个技巧,如果有人想要他们可以在批处理文件中尝试这个。这将在运行批处理文件时为您提供管理员提示
@echo off
cd \ && cd windows/system32 && command which needs admin credentials
pause
答案 10 :(得分:-11)
我通过降低Windows用户身份验证(UAC)来运行批处理文件。它对我有用。