我的BAT文件中包含以下行:
"Example1Server.exe"
我想在管理员模式下执行此操作。如何修改蝙蝠代码以管理员身份运行?
这样对吗?我需要加引号吗?
runas /user:Administrator invis.vbs Example1Server.exe
我的BAT文件中包含以下行:
"Example1Server.exe"
我想在管理员模式下执行此操作。如何修改蝙蝠代码以管理员身份运行?
这样对吗?我需要加引号吗?
runas /user:Administrator invis.vbs Example1Server.exe
Answers:
您用于runas
以特定用户身份启动程序:
runas /user:Administrator Example1Server.exe
Example1Server.exe
)不需要用引号引起来,但是在其他情况下(例如名称中的空格:),Example1 Server.exe
您确实需要它们。即使您不需要引号,也可以使用它们。
runas /User:abc "csript myscript.vbs"
或runas /User:abc "cmd /c start ..."
。
另一个答案要求您输入管理员帐户密码。另外,在管理员组中的帐户下运行与以管理员身份运行时不同,请参阅:Wikipedia上的UAC
Windows 7说明
为了以管理员身份运行,请为批处理文件创建一个快捷方式。
然后,您可以设置快捷方式以管理员身份运行:
现在,当您双击快捷方式时,它将提示您进行UAC确认,然后以管理员身份运行(如上所述,这与在管理员组中的帐户下运行是不同的)
检查以下屏幕截图
注意: 当您以“以管理员身份运行”时,当前目录(路径)将与bat文件不同。在许多情况下,bat文件引用旁边的相对文件可能会导致一些问题。例如,在我的Windows 7中,当前目录将是SYSTEM32,而不是bat文件位置! 要解决此问题,您应该使用
cd "%~dp0"
或更好
pushd "%~dp0"
确保cur dir与bat文件位于同一路径。
只需将其添加到bat文件的顶部即可:
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
它将提升为admin并保留在正确的目录中。在Windows 10上测试。
exit
到批处理文件的末尾,否则我将被提示。这可能是因为.vbs启动了另一个命令提示符。
如果可以使用第三方实用程序,则这里是elevate
命令行实用程序。
这是用法说明:
Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
elevate.exe
石头!
您可以使用nircmd.exe的迅速提升命令
NirCmd命令参考-提升
elevate [Program] {Command-Line Parameters}
仅对于Windows Vista / 7/2008:运行具有管理员权限的程序。[程序]包含一个或多个空格字符时,必须将其用引号引起来。
例子:
elevate notepad.exe
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS
elevate "c:\program files\my software\abc.exe"
PS:我在胜利10上使用它,它可以正常工作
我的实验表明,runas命令必须包含管理员用户的域(至少在我组织的环境设置中是如此):
runas /user:AdminDomain\AdminUserName ExampleScript.bat
如果您尚不知道管理员用户的域,请以管理员用户身份运行命令提示符实例,然后输入以下命令:
echo %userdomain%
由Kerrek SB和Ed Greaves提供的答案将在admin用户下执行目标文件,但是,如果该文件是尝试对普通登录进行操作的Command脚本(.bat文件)或VB脚本(.vbs文件)。用户的环境(例如更改注册表项),您可能无法获得理想的结果,因为脚本实际运行的环境将是管理员用户的环境,而不是普通登录用户的环境!例如,如果文件是在注册表的HKEY_CURRENT_USER配置单元上运行的脚本,则受影响的“当前用户”将是admin用户,而不是普通登录用户。