Windows:批处理文件:仅以管理员身份运行

时间:2013-06-03 18:23:34

标签: windows batch-file administrator

我有一个批处理文件可以将应用程序作为Windows服务启动。它叫做start.bat

@ECHO off
START c:\Ruby193\bin\ruby c:\Ruby193\bin\thin start -R c:\coolapp\config.ru -p 4321 -a localhost -e production

我的挑战是,只有具有管理员权限的“以管理员身份运行”,此程序才能正常运行。所以,我想添加一行来检查这个脚本是否实际上是以管理员权限运行的,只有在以管理员身份运行时才会执行。

如何在脚本中执行此操作?

3 个答案:

答案 0 :(得分:3)

这样的事情可能就是你所需要的:

set isadmin=0
whoami /all | findstr /c:" S-1-16-12288 ">nul && set isadmin=1

这应该导致%isadmin%变量为10,具体取决于shell是否以管理员身份运行。

这假定whoami实用程序的存在不一定适用于旧版本的Windows - 我相信它是从Windows Vista开始包含的。

答案 1 :(得分:1)

两个选项:

  1. 从WSH脚本中激发提升,如博文Scripting Elevation on Vista中所述。

  2. 使用引发UAC提示的外部可执行文件,例如Elevate32.exe/Elevate64.exe

  3. 对于您的场景,#2可能更好,因为您可以检测是否取消了提升提示(退出代码1223),还可以在继续(-w参数)之前等待已启动的可执行文件完成。

    比尔

答案 2 :(得分:0)

将脚本转换为VBScript可能会更容易,然后您可以更轻松地检查管理员权限,甚至将脚本提升为管理员。

请参阅此处了解如何在VBScript中进行检查:VBScript: Check if the script has administrative permissions

相关问题