我有一个批处理文件可以将应用程序作为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
我的挑战是,只有具有管理员权限的“以管理员身份运行”,此程序才能正常运行。所以,我想添加一行来检查这个脚本是否实际上是以管理员权限运行的,只有在以管理员身份运行时才会执行。
如何在脚本中执行此操作?
答案 0 :(得分:3)
这样的事情可能就是你所需要的:
set isadmin=0
whoami /all | findstr /c:" S-1-16-12288 ">nul && set isadmin=1
这应该导致%isadmin%
变量为1
或0
,具体取决于shell是否以管理员身份运行。
这假定whoami
实用程序的存在不一定适用于旧版本的Windows - 我相信它是从Windows Vista开始包含的。
答案 1 :(得分:1)
两个选项:
从WSH脚本中激发提升,如博文Scripting Elevation on Vista中所述。
使用引发UAC提示的外部可执行文件,例如Elevate32.exe/Elevate64.exe。
对于您的场景,#2可能更好,因为您可以检测是否取消了提升提示(退出代码1223),还可以在继续(-w参数)之前等待已启动的可执行文件完成。
比尔
答案 2 :(得分:0)
将脚本转换为VBScript可能会更容易,然后您可以更轻松地检查管理员权限,甚至将脚本提升为管理员。
请参阅此处了解如何在VBScript中进行检查:VBScript: Check if the script has administrative permissions