如何在另一个具有管理员权限的批处理文件中运行批处理文件?
我已经尝试了RUNAS命令,但它需要管理员密码。
我正在寻找一种替代方法来通过右键单击并以管理员身份运行批处理文件。我想要从另一个批处理文件自动化它。
如何在另一个具有管理员权限的批处理文件中运行批处理文件?
我已经尝试了RUNAS命令,但它需要管理员密码。
我正在寻找一种替代方法来通过右键单击并以管理员身份运行批处理文件。我想要从另一个批处理文件自动化它。
将每一行命令放在cmd中,或者把它们全部放在批处理文件中:
@echo off
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
"Put your command here"
对我来说运行得很好。
C:\WINDOWS\system32
。通常情况下(没有提升权限),您的批处理文件工作目录应该是文件所在的文件夹。 - anion在Windows 7上:
创建指向批处理文件的快捷方式
右键单击该快捷方式文件,选择属性
点击高级
按钮找到一个用于以管理员身份运行的复选框
请查看下面的截图
a.bat
以管理员身份运行。set mydir=%~dp0
Powershell -Command "& { Start-Process \"%mydir%b.bat\" -verb RunAs}"
这将提示用户确认对话框。用户选择是
,然后b.bat
将作为管理员运行。
使用
runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd
它只会在第一次要求输入密码。除非更改密码等情况发生,否则不会再次要求输入密码。
sudo
可以限制特定命令,而runas /savecred
则不能。如果您删除密码提示,则有效地消除了管理员和普通用户之间的障碍。更好的方法可能是创建一个计划任务。 - Ansgar Wiechers@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 ----
这个解决方案可以在启用用户账户控制的Windows 7、8.1和10系统中100%工作。
powershell -command start-process -file yourfilename -verb runas
在这里无法使用Runas.exe。您可以使用VBScript调用“以管理员身份运行”Shell动词。提升工具包包含一个批处理文件,允许您调用提升的命令:
elevate
cmd.exe
@echo off
cd /D "%~dp0"
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
"Put your command here"
@echo off
cd \ && cd windows/system32 && command which needs admin credentials
pause