我有一个批处理文件,可以将应用程序作为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我的挑战是,这个程序只有在“以管理员身份运行”并具有管理员权限时才能正常运行。因此,我想添加一行来检查这个脚本是否真的是以管理员权限运行的,并且仅当它是以管理员身份运行时才执行。
我如何在脚本中做到这一点呢?
发布于 2013-06-04 02:40:51
这样的代码可能就是您所需要的:
set isadmin=0
whoami /all | findstr /c:" S-1-16-12288 ">nul && set isadmin=1这将导致%isadmin%变量为1或0,具体取决于shell是否以管理员身份运行。
这假设了whoami实用程序的存在,该实用程序不一定在旧版本的视窗系统中可用-我相信它是从Windows Vista开始包含的。
发布于 2013-06-04 02:26:46
有两个选项:
从WSH脚本引发UAC提升,如博客文章Scripting Elevation on Vista.
对于您的场景,#2可能更可取,因为您可以检测提升提示是否已取消(退出代码1223),也可以等待启动的可执行文件完成后再继续(-w参数)。
帐单
发布于 2013-06-04 02:28:09
将脚本转换为VBScript可能会更容易,这样您就可以更容易地检查管理员权限,甚至将脚本提升为管理员。
有关如何在VBScript中进行检查的信息,请参阅此处:VBScript: Check if the script has administrative permissions
https://stackoverflow.com/questions/16903308
复制相似问题