2013-06-03 2 views
0

J'ai un fichier batch pour démarrer une application en tant que service Windows. Il est appelé start.batWindows: Fichier batch: Exécuter uniquement en tant qu'administrateur

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

Mon défi est que ce programme ne fonctionne que correctement si elle est « Exécuter en tant qu'administrateur » avec des privilèges d'administrateur. Donc, je voudrais ajouter une ligne pour vérifier si ce script est réellement exécuté avec des privilèges administratifs, et ne s'exécuter que s'il est exécuté en tant qu'administrateur.

Comment puis-je faire cela depuis le script?

+0

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

+0

double possible de [Lot script: comment vérifier les droits d'admin ] (http://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights) – and31415

Répondre

1

Deux options:

  1. altitude Provocation d'un script WSH, comme documenté dans le billet de blog. Scripting Elevation on Vista

  2. Utilisez un exécutable externe qui provoque l'invite UAC, par exemple Elevate32.exe/Elevate64.exe.

Pour votre scénario, # 2 peut être préférable parce que vous pouvez détecter si l'invite d'élévation a été annulée (code de sortie 1223) et vous pouvez aussi attendre que le fichier exécutable lancé pour terminer avant de poursuivre (paramètre -w).

Bill

3

Quelque chose comme cela pourrait être ce dont vous avez besoin:

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

Cela devrait aboutir à la variable qui est %isadmin% soit 1 ou 0 selon si le shell a été exécuté en tant qu'administrateur ou non. Cela suppose l'existence de l'utilitaire whoami qui ne sera pas nécessairement disponible sur les anciennes versions de Windows - je crois qu'il a été inclus à partir de Windows Vista.

Questions connexes