2015-04-13 1 views
3

j'ai écrit un programme web en php qui doit arrêter un service de fenêtres et de commencer quand courir comme ceci:la fonction Exécuter php exec pour arrêter les services Windows

exec('net stop spooler'); //to stop printer spooler 
exec('net start spooler'); //to start printer spooler 

les codes ci-dessus ne s'arrête pas le spooler d'imprimante et Je pense que je sais pourquoi, parce que quand j'ouvre cmd- invite de commande normalement et tapez net start spooler je reçois refuser l'accès ... mais quand j'ouvre cmd - invite de commande en tant qu'administrateur la ligne de commande va fonctionner, donc je pense que Apache doit également être donné l'autorisation d'administrateur afin que le code ci-dessus puisse fonctionner mais je ne peux pas comprendre comment accorder le code pour fonctionner en tant qu'administrateur. Le service de spouleur d'imprimante peut être trouvé lorsque vous cliquez sur Démarrer> Exécuter> dans Exécuter la commande Services.msc, alors vous verrez le spouleur d'imprimante comme l'un des services Windows ... lorsque le code ci-dessus s'exécute ... il faut arrêter ce service ou commence il

+0

Votre diagnostic semble bon et l'introduction des informations correctes devrait résoudre le problème. Cela pourrait être mieux résolu sur ServerFault.com en ce qui concerne la sécurité de la plate-forme plutôt que la programmation. – Pekka

Répondre

0

en fonction de votre configuration apache, vous devrez peut-être définir apache pour exécuter en tant qu'administrateur

  1. Aller au Panneau de configuration-> Tools_ administratif> services

  2. Sélectionnez le serveur Apache vice et a frappé Propriétés

  3. Sur l'onglet Connexion essayez de le changer à l'administrateur

  4. Redémarrez Apache

Mais généralement il ne serait pas nécessairement la meilleure idée de courir apache avec un tel haut autorité.