2013-06-03 165 views
0

我有一個批處理文件來啓動作爲Windows服務的應用程序。這就是所謂的start.batWindows:批處理文件:僅以管理員身份運行

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

我面臨的挑戰是,這個程序只運行正常,如果爲「以管理員身份運行」以管理員權限。所以,我想添加一行來檢查這個腳本是否實際上以管理權限運行,並且只有在以管理員身份運行時才能執行。

我該如何從腳本內做到這一點?

+0

貌似 http://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights – marceljg

+0

[批處理腳本的可能重複:如何檢查管理員權限](http://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights) – and31415

回答

1

兩個選項:

  1. 從WSH腳本招來圖,例如記錄在博客文章Scripting Elevation on Vista

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

對於您的情況,#2可能是可取的,因爲你可以檢測的提升提示是否被取消(退出代碼1223),你也可以等待啓動可執行持續(-w參數)之前完成。

比爾

3

像這樣的東西可能是你需要的東西:

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

這應該導致主要是取決於10%isadmin%變量之中無論shell是否以管理員身份運行。

這假定存在的whoami實用程序,它不一定會在舊版本的Windows上可用 - 我相信它包含在Windows Vista之後。

相關問題