如何编写BAT文件以始终以管理员模式运行?

时间:2011-07-25 02:51:30

标签: windows batch-file

我在BAT文件中有这一行:

"Example1Server.exe"

我想在管理员模式下执行此操作。如何修改bat代码以管理员身份运行?

这是对的吗?我需要加上引号吗?

runas /user:Administrator invis.vbs Example1Server.exe

10 个答案:

答案 0 :(得分:332)

另一个答案要求您输入管理员帐户密码。此外,在管理员组中的帐户下运行与以管理员身份运行不同,请参阅:UAC on Wikipedia

Windows 7说明

要以管理员身份运行,请为批处理文件创建快捷方式。

  1. 右键单击批处理文件,然后单击“复制”
  2. 导航到您想要快捷方式的位置
  3. 右键单击目录的背景
  4. 选择粘贴快捷方式
  5. 然后,您可以将快捷方式设置为以管理员身份运行:

    1. 右键单击快捷方式
    2. 选择属性
    3. 在“快捷方式”标签中,单击“高级”
    4. 选中“以管理员身份运行”复选框
    5. 单击“确定”,“确定”
    6. 现在,当您双击快捷方式时,它会提示您进行UAC确认,然后以管理员身份运行(正如我上面所说的那样,不同于在管理员组中的帐户下运行)

      查看下面的屏幕截图

      Screenshot

      注意: 当您以管理员身份运行时,当前目录(路径)将与bat文件不同。在许多情况下,这会导致一些问题,即bat文件引用它旁边的相关文件。例如,在我的Windows 7中,cur目录将是SYSTEM32而不是bat文件位置! To workaround it,您应该使用

      cd "%~dp0"

      或更好

      pushd "%~dp0"

      确保cur dir与bat文件所在的路径相同。

答案 1 :(得分:62)

您使用runas以特定用户身份启动程序:

runas /user:Administrator Example1Server.exe

答案 2 :(得分:8)

如果您可以使用第三方实用程序here is an elevate command line utility

这是用法说明:

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

答案 3 :(得分:6)

您可以使用nircmd.exeelevate命令

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:我在win 10上使用它并且它可以正常工作

答案 4 :(得分:5)

使用此工具将批处理文件转换为.exe:http://www.battoexeconverter.com/然后您可以以管理员身份运行它

答案 5 :(得分:5)

我认为我有解决密码问题的方法。 这个单一的论点确实令人惊叹。它要求输入一次密码,而不是再次询问密码。即使你把它放到另一个程序上,它也不会要求输入密码。这是:

runas /user:Administrator /savecred Example1Server.exe

答案 6 :(得分:3)

只需将其添加到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上进行了测试。

答案 7 :(得分:2)

go get github.com/mattn/sudo

然后

sudo Example1Server.exe

答案 8 :(得分:0)

在快捷方式“属性”中使用完整的物理驱动器\目标批处理文件的路径。

如果您使用像我一开始尝试的那样的基本驱动器,则在Windows 10中不起作用...

答案 9 :(得分:0)

  1. 我的实验表明, runas 命令必须包括管理员用户的域(至少在我的组织的环境设置中是如此):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    
  2. Kerrek SB Ed Greaves 提供的答案将在admin用户下执行目标文件,但是,如果目标脚本是“ .bat” ”文件,至少在尝试执行添加或修改注册表项之类的操作时,它们实际上不会升级脚本中的命令以具有管理员用户的管理员级别的权限。

    有人知道如何将蝙蝠文件(CMD)命令实际升级为管理员权限吗?