Je souhaite démarrer un service en mode silencieux à l'aide de la commande net.exe à partir d'un fichier bat non élevé. Mais je veux seulement que l'invite UAC soit demandée pour le net.exe et après cela, je ne veux plus que la fenêtre de la console apparaisse. Je sais qu'il existe un moyen de masquer la fenêtre de la console avec beaucoup de programmes comme nircmd:
nircmd elevatecmd execmd net start [service]
Mais l'invite UAC sera demandée pour le programme nircmd.
C'est possible?
nircmd
donc ça peut courirnet start
avec les privilèges élevés appropriés (requis par Windows).Réponses:
À ma connaissance, la réponse est probablement «non».
Le UAC est affiché pour
nircmd
donc ça peut courirnet start
avec les privilèges élevés appropriés (requis par Windows). Cette élévation doit avoir lieu avantnet start
est couru. D'après mon expérience, c'est généralement le cas de nombreux programmes ou scripts tiers remplissant une fonction similaire.Élever est une exception (c'est-à-dire qu'il affichera
Net Command
dans le UAC), mais là encore, il ne supprime pas la fenêtre de la console commenircmd
Est-ce que.Bien qu'une fenêtre de console puisse apparaître avec d'autres solutions (par exemple,
elevate.exe
, une.vbs
script), une nouvelle fenêtre de console ne s'affiche pas après l'exécutionnircmd elevatecmd execmd net start example_service
.Supprimer la fenêtre de la console
Bien qu'il ne soit probablement pas possible d'afficher
net.exe
dans le contrôle de compte d'utilisateur, vous pouvez supprimer la fenêtre de la console pour le fichier de commandes (ce qui semble sincèrement être votre objectif véritable, si je ne me trompe pas trop mal):Créer un
.bat
fichier par exemplestart_service.bat
avec quelque chose comme ce qui suit:Créez un nouveau raccourci quelque part pour l'exécuter
.bat
fichier. Faites en sorte que la cible ressemble à ce qui suit:Pour cet exemple, lorsque ce raccourci est utilisé (pas le
.bat
fichier directement), seule l'invite UAC sera affichée (aucune fenêtre de console ne s'affichera).la source
net start service
depuis une console non surélevée, aucun UAC ne sera affiché, il retournera simplement unAccess Denied
message. Si vous éleveznet.exe
depuis une console non surélevée utilisantnircmd.exe
, l'invite UAC sera pournircmd
. En ce qui concerne.vbs
, les scripts que je connais ne demandent pasnet.exe
non plus. En utilisantelevate.exe
, vous avez raison, cela afficheraNet Command
(pour lenet.exe
) mais ne supprime pas la fenêtre de la console, malheureusement.nircmd
étant non signé, c'est un logiciel parfaitement sûr dans mon expérience.J'ai enfin trouvé un moyen de démarrer et d'arrêter un service en silence sans afficher la fenêtre de la console. UAC s'affiche pour un programme signé par Microsoft (wscript.exe), avec VBScript qui utilise WMI pour démarrer et arrêter un service.
Démarrer un service: Créez un fichier StartService.vbs avec ce code et modifiez la première ligne avec le service que vous souhaitez démarrer.
pour démarrer le service:
Arrêtez un service: Créez un fichier StopService.vbs avec le code:
pour arrêter le service:
la source