IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Exécuter un bat en administrateur depuis un vbs


Sujet :

VBScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Points : 187
    Points
    187
    Par défaut Exécuter un bat en administrateur depuis un vbs
    Bonjour,
    Je souhaiterais exécuter un .bat contenant des commandes à éxécuter avec les droits administrateur à partir d'un .vbs.

    Voici ce que j'ai essayé en ayant cherché sur internet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "runas /user:Administrateur " & chr(34) & "monFichier.bat" & Chr(34), 0
    Or, il ne se passe rien quand j'exécute le vbs. De plus, je voudrais que le vbs puisse être exécutés sur n'importe quelle machine en tant qu'administrateur (par exemple si le client est anglais, je ne pense pas que le nom d'utilisateur soit Administrateur" mais plutot "Administrator" non?

    Quelle est la meilleure solution svp sachant que les PC des clients peuvent être sous Windows 7, Windows 8 et bientot Windows 10?
    Diplomes: DUT informatique et Master 2 MIAGE.
    Développeur Java/J2EE (principalement), .NET (niveau scolaire mais je compte m'améliorer ) et Web (HTML, PHP...).

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Or, il ne se passe rien quand j'exécute le vbs.
    Il me semble que la syntaxe doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "Cmd.exe runas /user:Administrateur " & chr(34) & "monFichier.bat" & Chr(34), 0
    ou bien mettre 1 au lieu de zéro(0) pour voir le résultat ensuite rectifier.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Points : 187
    Points
    187
    Par défaut
    Merci pour le retour.

    C'est bien juste runas mais il demande le mot de passe Administrateur quand je mets de 0 à 1 pour avoir la console. En fait, je voudrais avoir l'équivalent d'un "Executer en tant qu'Administrateur" (qui ne demande pas de mot de passe).

    Est-ce possible?
    Diplomes: DUT informatique et Master 2 MIAGE.
    Développeur Java/J2EE (principalement), .NET (niveau scolaire mais je compte m'améliorer ) et Web (HTML, PHP...).

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    et si tu essaies ceci :
    WshShell.Run "runas /profile /user:Nom_Utilisateur /pwd:mot_de_passe " & chr(34) & "monFichier.bat" & Chr(34), 1 (avec un espace après le mot de passe)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Points : 187
    Points
    187
    Par défaut
    Merci pour la réponse. Je demanderais les logins et mot de passe admin si l'utilisateur n'est pas admin.

    Je vais tester et ferais un retour.
    Diplomes: DUT informatique et Master 2 MIAGE.
    Développeur Java/J2EE (principalement), .NET (niveau scolaire mais je compte m'améliorer ) et Web (HTML, PHP...).

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Points : 187
    Points
    187
    Par défaut
    Suite à ton aide voici ce que j'ai réussi à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    isAdministrator = false
    isAdministratorGroupFound = true
     
    Set objNetwork = CreateObject("Wscript.Network")
    strComputer = objNetwork.ComputerName
    strUser = objNetwork.UserName
     
    On Error Resume Next
     
    Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")
    If Err.Number <> 0 Then
    		Err.Clear()
    		Set objGroup = GetObject("WinNT://" & strComputer & "/Administrateurs")
    		If Err.Number <> 0 Then
    			isAdministratorGroupFound = false
    			isAdministrator = false
    		End If
    End If
    Err.Clear()
     
    If isAdministratorGroupFound Then
    For Each objUser in objGroup.Members
        If objUser.Name = strUser Then
            isAdministrator = true
        End If
    Next
    End If
     
    Set WshShell = CreateObject("WScript.Shell")
    If isAdministrator Then
        WshShell.Run chr(34) & "monFichier.bat" & Chr(34), 0
    Else
        adminID=inputBox("Domain\Admin user:","ID")
        WshShell.Run "runas /user:" & adminID & " " & Chr(34) & "monFichier.bat " & Chr(34), 1
    End If
     
    Set WshShell = Nothing
    Dans ce script je teste donc si un groupe Administrators existe. Si ce n'est pas le cas, je regarde si un groupe Administrateurs existe. Si j'ai trouvé un de ces groupes, je teste si mon utilisateur en fait parti. Si c'est le cas, j'exécute mon bat normalement. Si ce n'est pas le cas, j'exécute mon bat avec runas après avoir demandé l'utilisateur administrateur.

    Maintenant voici mon soucis: la commande runas ne permet pas de préciser le mot de passe avec /pwd comme tu l'indiques. J'ai donc mis 1 au lieu de 0 pour avoir la console. Il demande donc le mot de passe dans la console pour l'utilisateur indiqué mais lorsque le bat est exécuté il y a une console qui s'affiche (chose que je ne voudrais pas).

    Il semble que ce soit la commande runas qui affiche par défaut la console du bat.

    Comme je suis obligé de mettre 1 pour avoir la console afin de pouvoir saisir le mot de passe, voyez-vous un moyen de ne pas l'avoir pour l'exécution du bat (par exemple en mettant un argument pour la commande runas afin qu'elle la cache)?

    Edit: jai trouvé un moyen en lancant mes commandes avec "start" (qui permet de ne pas attendre le retour de la commande) dans mon bat puis en faisant exit. Le script est donc exécuté, la console s'affiche très rapidement puis se ferme.
    Diplomes: DUT informatique et Master 2 MIAGE.
    Développeur Java/J2EE (principalement), .NET (niveau scolaire mais je compte m'améliorer ) et Web (HTML, PHP...).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter fichier .BAT depuis page JSP
    Par emaktb dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/05/2015, 19h07
  2. Réponses: 4
    Dernier message: 28/10/2011, 08h17
  3. Réponses: 5
    Dernier message: 15/04/2009, 08h15
  4. [C#] Exécuter une méthode apsx.cs depuis un ascx
    Par bendj dans le forum ASP.NET
    Réponses: 12
    Dernier message: 12/07/2005, 11h18
  5. [BAT] commande AT pour exécuter fichier .bat
    Par PatLogan dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 04/01/2005, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo